Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ahorcado.py
diff options
context:
space:
mode:
Diffstat (limited to 'ahorcado.py')
-rwxr-xr-xahorcado.py235
1 files changed, 0 insertions, 235 deletions
diff --git a/ahorcado.py b/ahorcado.py
deleted file mode 100755
index 22f1208..0000000
--- a/ahorcado.py
+++ /dev/null
@@ -1,235 +0,0 @@
-# -*- coding: UTF-8 -*-
-#Ahorcado
-import gtk
-import logging
-from gettext import gettext as _
-from sugar.activity import activity
-from os.path import exists
-from datetime import datetime
-import pickle
-
-import utils
-
-_logger = logging.getLogger('ahorcado-activity')
-_logger.setLevel(logging.DEBUG)
-
-class Ahorcado:
-
- def __init__(self):
-
- #ventana
- self.ventana = gtk.Window()
- self.ventana.set_title(_('Ahorcado'))
- self.ventana.connect('key-press-event', self._key_press_cb)
- self.ventana.connect('destroy', self._destroy_cb)
-
- #contenedores
- self.contenedor = gtk.VBox()
- self.ventana.add(self.contenedor)
-
- self.contenedor_superior = 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_puntaje = gtk.VBox()#desde aca lleva interface de los tres mejores puntajes
-
- self.primero_label = gtk.Label("Primer Puntaje : " % load_puntaje())
-
- self.contenedor_puntaje.pack_start(self.primero_label, False, False, 0)
-
- """
-
-
- self.subcontenedor= gtk.VBox()
-
- #interface
- self.imagen = gtk.Image()
- self.instrucciones_label = gtk.Label(_('Instrucciones'))
- self.instrucciones_label.set_justify(gtk.JUSTIFY_FILL)
- self.instrucciones_label.set_line_wrap(gtk.TRUE)
- self.aciertos_label = gtk.Label('Puntaje: 0')
- self.errores_label = gtk.Label()
- self.palabra_label = gtk.Label()
- self.letrasusadas_label = gtk.Label(_('Letras Usadas: '))
- self.palabra_entry = gtk.Entry()
- self.ok_btn = gtk.Button(_('Ok'))
- self.ok_btn.connect('clicked', self._ok_btn_clicked_cb, None)
- self.nuevojuego_btn = gtk.Button(_('Nuevo Juego'))
- self.nuevojuego_btn.connect('clicked', self._nuevojuego_btn_clicked_cb, None)
- self._cambiar_imagen(0)
-
- self.aciertos = 0 #Cuenta los aciertos de letras en la palabra secreta
- self.lista_record = self.load_puntaje()
- self._creacion() # Crea las variables necesarias para el comienzo del juego
-
- #agregando elementos
- self.contenedor_superior.pack_start(self.imagen)
- 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.letrasusadas_label)
- self.subcontenedor.pack_start(self.errores_label)
- self.subcontenedor.pack_start(self.palabra_label)
- self.subcontenedor.pack_start(self.nuevojuego_btn)
-
- self.contenedor_inferior.pack_start(self.palabra_entry)
- self.contenedor_inferior.pack_start(self.ok_btn, False)
-
- self.contenedor.show_all()
- self.nuevojuego_btn.hide()
- self.ventana.show()
-
- def _creacion(self):
- '''Crea las variables necesarias para el comienzo del juego'''
- 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
- self.palabra, self.significado = utils.palabra_aleatoria()
- self.aciertos_label.set_text(_('Puntaje: %s' % self.aciertos))
- self.errores_label.set_text(_('Errores: 0'))
- self.letrasusadas_label.set_text(_('Letras Usadas: '))
- self.instrucciones_label.set_text(_('Instrucciones'))
- self.palabra_label.set_text("")
- self.nuevojuego_btn.hide()
- self._cambiar_imagen(0)
- self._pintar_palabra()
- print self.palabra
-
- def _ok_btn_clicked_cb(self, widget, data=None):
- self._actualizar_palabra()
-
- def _nuevojuego_btn_clicked_cb(self, widget, data=None):
- self.palabra_entry.set_sensitive(True) #Activa la caja de texto
- self.ok_btn.set_sensitive(True) #Activa el botón ok
- self._creacion()
-
- def _cambiar_imagen(self, level):
- ruta = 'resources/%s.png' % level
- _logger.debug('level: %s' % 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' or keyname == "KP_Enter":
-
- self._actualizar_palabra()
- return False
-
- def read_file(self, filepath):
- pass
-
- def write_file(self, filepath):
- pass
-
- def main(self):
- gtk.main()
-
- def load_puntaje(self):
- if exists("puntaje.pck"):
- f_read = open("puntaje.pck", "rb")
- x = pickle.load(f_read)
- f_read.close()
- return x
- else:
- return []
-
- def guardar_puntaje(self):
- f_write = open("puntaje.pck", "ab")
- info_gamer = (self.aciertos, datetime.now())
- lista_gamer = []
- lista_gamer.append(info_gamer)
- pickle.dump(lista_gamer, f_write)
- f_write.close()
-
- def _destroy_cb(self, widget, data=None):
- self.guardar_puntaje()
- gtk.main_quit()
-
- def _actualizar_palabra(self):
-
- #Convierte la letra a minuscula
- letra_actual = self.palabra_entry.get_text().lower()
- _logger.debug('letra_actual: %s' % letra_actual)
-
- #Evalua si se escribio mas de 1 letra o esta vacio
- if (len(letra_actual) is not 1 or letra_actual == " "):
- self.palabra_entry.set_text('')
- _logger.debug('mas de una letra o vacio')
- self.instrucciones_label.set_text(_("Instrucciones:\nIntroduzca solo una letra!"))
-
- #Evalua si letra esta dentro de palabra
- elif (letra_actual in self.palabra and letra_actual not in self.l_aciertos):
- self.l_aciertos.append(letra_actual)
-
- for i in range(len(self.palabra)):
- if (letra_actual == self.palabra[i]):
- self.aciertos += 1
-
- _logger.debug('letra dentro de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores))
- self._actualizar_labels("Instrucciones:\nLetra dentro de palabra secreta!")
-
- #Evalua si se acerto la palabra y temina el juego
- if (self.aciertos == len(self.palabra)):
- _logger.debug('acerto palabra')
- self.instrucciones_label.set_text(_('Instrucciones:\nAcertastes la palabra secreta, ' \
- 'FELICIDADES! \n su significado es: %s' % self.significado))
- self.nuevojuego_btn.show() # muestra el boton para comenzar el juego
-
- #Evalua si letra es repetida y esta dentro de palabra
- elif (letra_actual in self.palabra and letra_actual in self.l_aciertos):
- _logger.debug('letra repetida y dentro de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores))
- self._actualizar_labels("Instrucciones:\nLetra repetida y dentro de palabra secreta!")
-
- #Evalua si letra no esta dentro de palabra
- elif (letra_actual not in self.palabra and letra_actual not in self.l_errores):
- self.l_errores.append(letra_actual)
- self.errores += 1
- self._cambiar_imagen(self.errores)
- _logger.debug('letra fuera de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores))
- self._actualizar_labels("Instrucciones:\nLetra fuera de palabra secreta!")
-
- #Evalua si se completo el ahorcado y temina el juego
- if (self.errores >= 8):
- _logger.debug('fin del juego')
- self.instrucciones_label.set_text(_('Instrucciones:\nLa palabra secreta era %s, ' \
- 'Fin del juego! x( su significado es %s' %
- (self.palabra, self.significado)) )
- self.aciertos = 0
- self.palabra_entry.set_sensitive(False) #Activa la caja de texto
- self.ok_btn.set_sensitive(False) #Inactiva el botón ok una vez que pierde
- self.nuevojuego_btn.show() # muestra el boton para comenzar el juego
-
- #Evalua si letra es repetida y no dentro de palabra
- elif (letra_actual not in self.palabra and letra_actual in self.l_errores):
- _logger.debug('letra repetida y fuera de palabra, aciertos: %s, errores: %s' %(self.aciertos, self.errores))
- self._actualizar_labels("Instrucciones:\nLetra repetida y fuera de palabra secreta!")
-
- self._pintar_palabra()
-
- def _actualizar_labels(self, instrucciones):
- '''Actualiza labels segun instrucciones'''
- self.palabra_entry.set_text('')
- self.instrucciones_label.set_text(_(instrucciones))
- self.aciertos_label.set_text(_('Puntaje: %s' % self.aciertos))
- letras = ', '.join(letra for letra in self.l_aciertos)
- letras2 = ', '.join(letra for letra in self.l_errores)
- self.letrasusadas_label.set_text(_('Letras Usadas: %s %s' % (letras,letras2)))
- self.errores_label.set_text(_('Errores: %s' % self.errores))
-
-
- def _pintar_palabra(self):
- '''Pinta las lineas de la palabra'''
- pista = ''
- for letra in self.palabra:
- if letra in self.l_aciertos:
- pista += '%s ' % letra
- else:
- pista += '_ '
- self.palabra_label.set_text(pista)
-
-if __name__ == "__main__":
- foo = Ahorcado()
- foo.main()