diff options
author | Marcelo Gutierrez <mmgc84@mmgc84-ltxubu.(none)> | 2010-07-16 22:23:12 (GMT) |
---|---|---|
committer | Marcelo Gutierrez <mmgc84@mmgc84-ltxubu.(none)> | 2010-07-16 22:23:12 (GMT) |
commit | 76233f4331af58f4e3b2b996ec6562388c228ff2 (patch) | |
tree | 37d572007f4743c65a1cc2b76c94eac9643f49c9 | |
parent | 8770e6ae267bfa6176b78605b70d06e4dd2119d0 (diff) |
aqui esta mi ahorcado, casi casi listo x)
-rwxr-xr-x | ahorcado.py | 112 |
1 files changed, 73 insertions, 39 deletions
diff --git a/ahorcado.py b/ahorcado.py index 78b44d3..bd6c37a 100755 --- a/ahorcado.py +++ b/ahorcado.py @@ -1,19 +1,24 @@ -from sugar.activity import activity +#Marcelo Martin Gutierrez Cabezas import gtk -from gettext import gettext as _ import logging +from gettext import gettext as _ +from sugar.activity import activity import utils _logger = logging.getLogger('ahorcado-activity') +_logger.setLevel(logging.DEBUG) class Ahorcado: def __init__(self): self.palabra = utils.palabra_aleatoria() - self.puntaje = 0 - self.errores = 0 - self.letras = [] + _logger.debug('palabra: %s' % self.palabra) + + self.aciertos = 0 #Cuenta los aciertos de letras en la palabra secreta + self.errores = 0 #Cuenta los errores de letras en la palabra secreta + self.l_aciertos = [] #Lista de letras acertadas en la palabra secreta + self.l_errores = [] #Lista de letras erradas en la palabra secreta #ventana self.ventana = gtk.Window() @@ -26,48 +31,50 @@ class Ahorcado: self.ventana.add(self.contenedor) self.contenedor_superior = gtk.HBox() - self.contenedor_inferior = gtk.HBox() - self.contenedor_subinferior = gtk.HBox() - + self.contenedor_inferior= gtk.HBox() + self.contenedor.pack_start(self.contenedor_superior) self.contenedor.pack_start(self.contenedor_inferior, expand=False) - self.contenedor.pack_start(self.contenedor_subinferior) + self.subcontenedor= gtk.VBox() + #interface - self.palabra_entry = gtk.Entry() + self.imagen = gtk.Image() + self.instrucciones_label = gtk.Label('Instrucciones') + self.aciertos_label = gtk.Label('Puntaje: 0') + self.errores_label = gtk.Label('Errores: 0') self.palabra_label = gtk.Label() - self.puntaje_label = gtk.Label('Puntaje: 0') + self.palabra_entry = gtk.Entry() self.ok_btn = gtk.Button(_('Ok')) self.ok_btn.connect('clicked', self._ok_btn_clicked_cb, None) - self.label = gtk.Label() - self.letra_vacia = gtk.Label('') - self.imagen = gtk.Image() self._cambiar_imagen(0) - self._actualizar_palabra() - + #agregando elementos self.contenedor_superior.pack_start(self.imagen) - self.contenedor_superior.pack_start(self.puntaje_label) - self.contenedor_superior.pack_start(self.palabra_label) - self.contenedor_superior.pack_start(self.letra_vacia, False) + self.contenedor_superior.pack_start(self.subcontenedor) + self.subcontenedor.pack_start(self.instrucciones_label) + self.subcontenedor.pack_start(self.aciertos_label) + self.subcontenedor.pack_start(self.errores_label) + self.subcontenedor.pack_start(self.palabra_label) self.contenedor_inferior.pack_start(self.palabra_entry) self.contenedor_inferior.pack_start(self.ok_btn, False) self.contenedor.show_all() self.ventana.show() - print self.palabra - + def _ok_btn_clicked_cb(self, widget, data=None): self._actualizar_palabra() def _cambiar_imagen(self, level): + _logger.debug('level: %s' % level) ruta = 'resources/%s.jpg' % level self.imagen.set_from_file(ruta) def _key_press_cb(self, widget, event): keyname = gtk.gdk.keyval_name(event.keyval) + _logger.debug('keyname: %s' % keyname) if keyname == 'Return': self._actualizar_palabra() return False @@ -85,32 +92,59 @@ class Ahorcado: gtk.main_quit() def _actualizar_palabra(self): - letra_actual = self.palabra_entry.get_text() - self.letra_vacia.set_text('') - #TODO: Validar que solo introduzca una letra - if letra_actual != '' and letra_actual in self.palabra: - self.puntaje += 1 - self.puntaje_label.set_text(_('Puntaje: %s' % self.puntaje)) - #self.palabra = utils.palabra_aleatoria() - self.letras.append(letra_actual) - elif letra_actual != '': - self.letras.append(letra_actual) + letra_actual = self.palabra_entry.get_text().lower()#Convierte la letra a minuscula + _logger.debug('letra_actual: %s' % letra_actual) + if (len(letra_actual) is not 1 or letra_actual == " "): #Evalua si se escribio mas de 1 letra o esta vacio + self.palabra_entry.set_text('') + _logger.debug('mas de una letra o vacio') + self.instrucciones_label.set_text(_("Instruciones:\nIntroduzca solo una letra!")) + elif (letra_actual in self.palabra and letra_actual not in self.l_aciertos): #Evalua si letra esta dentro de palabra + self.l_aciertos.append(letra_actual) + for i in range(len(self.palabra)): + if (letra_actual == self.palabra[i]): + self.aciertos += 1 + self.palabra_entry.set_text('') + _logger.debug('letra dentro de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores)) + self.instrucciones_label.set_text(_("Instruciones:\nLetra dentro de palabra secreta!")) + self.aciertos_label.set_text(_('Puntaje: %s' % self.aciertos)) + self.errores_label.set_text(_('Errores: %s' % self.errores)) + if (self.aciertos == len(self.palabra)): #Evalua si se acerto la palabra y temina el juego + _logger.debug('acerto palabra') + self.instrucciones_label.set_text(_('Instruciones:\nAcertastes la palabra secreta, FELICIDADES! x)')) + pass + elif (letra_actual in self.palabra and letra_actual in self.l_aciertos): #Evalua si letra es repetida y esta dentro de palabra + self.palabra_entry.set_text('') + _logger.debug('letra repetida y dentro de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores)) + self.instrucciones_label.set_text(_("Instruciones:\nLetra repedita y dentro de palabra secreta!")) + self.aciertos_label.set_text(_('Puntaje: %s' % self.aciertos)) + self.errores_label.set_text(_('Errores: %s' % self.errores)) + elif (letra_actual not in self.palabra and letra_actual not in self.l_errores): #Evalua si letra no esta dentro de palabra + self.l_errores.append(letra_actual) self.errores += 1 self._cambiar_imagen(self.errores) - elif letra_actual == '' and (self.errores != 0 or self.puntaje !=0): - self.letra_vacia.set_text('Usted no ha introducido ninguna letra') - - + self.palabra_entry.set_text('') + _logger.debug('letra fuera de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores)) + self.instrucciones_label.set_text(_("Instruciones:\nLetra fuera de palabra secreta!")) + self.aciertos_label.set_text(_('Puntaje: %s' % self.aciertos)) + self.errores_label.set_text(_('Errores: %s' % self.errores)) + if (self.errores >= 8): #Evalua si se completo el ahorcado y temina el juego + _logger.debug('fin del juego') + self.instrucciones_label.set_text(_('Instruciones:\nLa palabra secreta era %s, Fin del juego! x(' % self.palabra) ) + pass + elif (letra_actual not in self.palabra and letra_actual in self.l_errores): #Evalua si letra es repetida y no dentro de palabra + self.palabra_entry.set_text('') + _logger.debug('letra repetida y fuera de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores)) + self.instrucciones_label.set_text(_("Instruciones:\nLetra repetida y fuera de palabra secreta!")) + self.aciertos_label.set_text(_('Puntaje: %s' % self.aciertos)) + self.errores_label.set_text(_('Errores: %s' % self.errores)) pista = '' for letra in self.palabra: - if letra in self.letras: + if letra in self.l_aciertos: pista += '%s ' % letra else: pista += '_ ' - self.palabra_label.set_text(pista) - self.palabra_entry.set_text('') - + if __name__ == "__main__": foo = Ahorcado() foo.main() |