diff options
author | Yuri Yasser González Parajón <yurigonzalezni@gmail.com> | 2010-08-25 15:06:26 (GMT) |
---|---|---|
committer | Yuri Yasser González Parajón <yurigonzalezni@gmail.com> | 2010-08-25 15:06:26 (GMT) |
commit | 700752799e6b304eee756cb668f12d4ac55a5604 (patch) | |
tree | 1ae8ae95f797e1011b6f511ca06cf71bfdf5c8af | |
parent | a00b8dd7f267f94fcc576e7bb1ed5c6b220ad10b (diff) |
Funcionalidad Completa de Dictado
-rw-r--r-- | Dictado_1.py | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/Dictado_1.py b/Dictado_1.py new file mode 100644 index 0000000..6fd96c5 --- /dev/null +++ b/Dictado_1.py @@ -0,0 +1,267 @@ +"""Desarrollo de un Dictado Robotizida o_0""" +"""en proceso""" +#written by Walter. D. Vargas <pynash@gmail.com> + +# -*- coding: utf-8 -*- + +import pygtk +import gtk + +import subprocess +import glib +import logging + +_logger = logging.getLogger() +_logger.setLevel(logging.DEBUG) + +class Dictado: + def __init__(self): + #main window + self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) + self.window.connect("delete_event", self._delete_event_cb) + self.window.set_title("Dictado") + self.window.set_border_width(10) + + self.word = "" + + #levels + self.words = [] + self.nivel = [] + + #left container + self.contenedor_izq = gtk.VBox() + + self.label_info = gtk.Label("Inicio de Juego") + self.label_info.set_sensitive(1) + self.contenedor_izq.pack_start(self.label_info, False, False, 0) + self.label_info.show() + + self.comenzar_dictado = gtk.Button(" Comenzar Dictado ") + self.comenzar_dictado.set_sensitive(1) + self.comenzar_dictado.connect("clicked", self._dictar_cb) + + self.cancelar = gtk.Button(" Cancelar ") + self.cancelar.set_sensitive(0) + self.cancelar.connect("clicked", self._cancela_cb, 0) + + self.salir = gtk.Button(" Salir ") + self.salir.connect("clicked", self._salir_cb) + + self.opciones = gtk.HBox() + self.opciones.pack_start(self.comenzar_dictado, False, False, 40) + self.opciones.pack_start(self.cancelar, False, False, 40) + self.opciones.pack_start(self.salir, False, False, 40) + self.comenzar_dictado.show() + self.cancelar.show() + self.salir.show() + + self.contenedor_izq.pack_start(self.opciones, False, False, 10) + self.opciones.show() + + self.palabra = gtk.Label() + self.hbox_repeat = gtk.HBox() + self.hbox_repeat.pack_start(self.palabra, False, False, 80) + self.palabra.show() + + self.repetir = gtk.Button("Repetir Palabra") + self.repetir.set_sensitive(0) + self.hbox_repeat.pack_start(self.repetir, False, False, 0) + self.repetir.show() + self.repetir.connect("clicked", self._repeat_cb) + + self.jugar_again = gtk.Button("Volver a Jugar") + self.jugar_again.connect("clicked", self._again_cb) + self.jugar_again.set_sensitive(0) + self.hbox_repeat.pack_start(self.jugar_again, False, False, 0) + self.jugar_again.show() + + self.contenedor_izq.pack_start(self.hbox_repeat, False, False, 0) + self.hbox_repeat.show() + + #Aqui va entry y aceptar + self.hbox = gtk.HBox() + + self.texto = gtk.Entry(100) + self.texto.set_sensitive(0) + self.hbox.pack_start(self.texto, False, False, 0) + self.texto.show() + + self.word = self.texto + + self.aceptar = gtk.Button(" Aceptar ") + self.aceptar.set_sensitive(0) + self.aceptar.connect("clicked", self._aceptar_cb) + self.hbox.pack_start(self.aceptar, False, False, 10) + self.aceptar.show() + + self.contenedor_izq.pack_start(self.hbox, False, False, 0) + self.hbox.show() + #end left container + + #container with container right and left + self.hbox = gtk.HBox() + self.hbox.pack_start(self.contenedor_izq, False, False, 0) + #self.hbox.pack_start(self.contenedor_der, False, False, 0) + self.contenedor_izq.show() + #self.contenedor_der.show() + + self.window.add(self.hbox) + self.hbox.show() + self.window.show() + + self.num_clic = 0 + self.aciertos = 0 + + def _again_cb(self, widget): + self._activa_desactiva_cb(1) + self._act_desact_operacion_cb(0) + widget.set_sensitive(0) + self.label_info.set_label("Inicio del Juego") + + def _repeat_cb(self, widget): + #self.word = self.words[self.num_clic] + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.word, shell=True) + + #autoFunction + def _autocall_cb(self, time, widget): + glib.timeout_add(time, self._pc, widget) + + #machine's action + def _pc(self, widget): + #if self.palabra.get_text() in self.words: + + self.word = self.words[self.num_clic] #Asigno el valor a una variable, e introduzco esta a los metodos + + if self.num_clic < (len(self.words)): + #self.palabra.set_text(self.words[self.num_clic]) + self.palabra.set_text(self.word) + #subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.words[self.num_clic], shell=True) + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.word, shell=True) + #if (self.num_clic != (len(self.words))): + # pass + else: + if self.aciertos == len(self.words): + if self.nivel != 3: + self.nivel += 1 + self._write_cb("nivel.txt", str(self.nivel)) + self.aciertos = 0 + self.num_clic = 0 + self.comenzar_dictado.set_sensitive(1) + self.cancelar.set_sensitive(0) + self._act_desact_operacion_cb(0) + self.label_info.set_text("Has Avanzado al Siguiente Nivel!") + self.palabra.set_text("") + else: + self.label_info.set_label("Has Concluido Exitosamente!") + self._write_cb("nivel.txt", str(1)) + self.aciertos = 0 + self.num_clic = 0 + self.cancelar.set_sensitive(0) + self._act_desact_operacion_cb(0) + self.jugar_again.set_sensitive(1) + self.palabra.set_text("") + else: + self.palabra.set_text("") + self.label_info.set_text("Has Fallado!") + self.num_clic = 0 + self.aciertos = 0 + self._act_desact_operacion_cb(0) + self.cancelar.set_sensitive(0) + self.comenzar_dictado.set_sensitive(1) + + def _aceptar_cb(self, widget, data=None): + r, w = "correcto", "error" + if self.texto.get_text() != "": + self.num_clic += 1 + if self.texto.get_text() == self.words[(self.num_clic) - 1]: + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % r, shell=True) + self._autocall_cb(100, self.palabra)#3 es tiempo + self.texto.set_text("") + self.aciertos += 1 + else: + self.num_clic -= 1 + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % w, shell=True) + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.word, shell=True) + self.texto.set_text("") + + def _dictar_cb(self, widget, data=None): + self.cancelar.set_sensitive(1) + self.comenzar_dictado.set_sensitive(False) + self._act_desact_operacion_cb(1) + self.nivel = self._open_nivel("nivel.txt") + self.nivel = int(self.nivel[0]) + if self.nivel == 1: + self.label_info.set_label("Nivel 1") + self.words = self._open_file("1a.txt") + self.palabra.set_text(self.words[0]) + + self.word = self.words[0] + + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.words[0], shell=True) + elif self.nivel == 2: + self.label_info.set_label("Nivel 2") + self.words = self._open_file("1b.txt") + self.palabra.set_text(self.words[0]) + + self.word = self.words[0] + + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.words[0], shell=True) + else: + self.label_info.set_label("Nivel 3") + self.words = self._open_file("1c.txt") + self.palabra.set_text(self.words[0]) + + self.word = self.words[0] + + subprocess.call("espeak -s 100 -v es-sc --stdout %s | aplay" % self.words[0], shell=True) + + def _activa_desactiva_cb(self, i): + self.comenzar_dictado.set_sensitive(i) + #self.cancelar.set_sensitive(i) + + def _act_desact_operacion_cb(self, i): + self.texto.set_sensitive(i) + self.aceptar.set_sensitive(i) + self.repetir.set_sensitive(i) + + def _cancela_cb(self, widget, i ): + self.label_info.set_text("Inicio del juego") + self._activa_desactiva_cb(1) + self._act_desact_operacion_cb(0) + self.cancelar.set_sensitive(0) + self.num_clic = 0 + self.palabra.set_text("") + + def _open_nivel(self, file): + line = [] + with open(file, "r") as file: + line.append((file.readline()).strip()) + return line + + def _open_file(self, file): + list = [] + with open(file, "r") as file: + list1 = file.readlines() + for i in list1: + list.append(i.strip()) + return list + + def _write_cb(self, file, x): + with open(file, "w") as file: + file.write(x) + + def _delete_event_cb(self, widget, event, data=None): + gtk.main_quit() + return False + + def _salir_cb(self, widget, data=None): + gtk.main_quit() + return False + + def main(self): + gtk.main() + return 0 + +if __name__=="__main__": + d = Dictado() + d.main() |