Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ahorcado.py
blob: b76b32ac63eb3046c9fcf41685c5c7eb0ac458ae (plain)
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()