Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcelo 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)
commit76233f4331af58f4e3b2b996ec6562388c228ff2 (patch)
tree37d572007f4743c65a1cc2b76c94eac9643f49c9
parent8770e6ae267bfa6176b78605b70d06e4dd2119d0 (diff)
aqui esta mi ahorcado, casi casi listo x)
-rwxr-xr-xahorcado.py112
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()