1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
from sugar.activity import activity
import gtk
from gettext import gettext as _
import logging
import utils
_logger = logging.getLogger('ahorcado-activity')
class Ahorcado:
def __init__(self):
self.palabra = utils.palabra_aleatoria()
self.puntaje = 0
self.errores = 0
self.letras = []
#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)
#interface
self.palabra_entry = gtk.Entry()
self.palabra_label = gtk.Label()
self.puntaje_label = gtk.Label('Puntaje: 0')
self.ok_btn = gtk.Button(_('Ok'))
self.ok_btn.connect('clicked', self._ok_btn_clicked_cb, None)
self.label = 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_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):
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)
if keyname == 'Return':
self._actualizar_palabra()
return False
def read_file(self, filepath):
pass
def write_file(self, filepath):
pass
def main(self):
gtk.main()
def _destroy_cb(self, widget, data=None):
gtk.main_quit()
def _actualizar_palabra(self):
letra_actual = self.palabra_entry.get_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)
self.errores += 1
self._cambiar_imagen(self.errores)
else:
pass #TODO validar letra vacia
pista = ''
for letra in self.palabra:
if letra in self.letras:
pista += '%s ' % letra
else:
pista += '_ '
self.palabra_label.set_text(pista)
self.palabra_entry.set_text('')
if __name__ == "__main__":
foo = Ahorcado()
foo.main()
|