comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[PyQT4] Memoriza :: "Entrenando tu memoria" :: JaAViEr

  • 0 Respuestas
  • 921 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« en: Mayo 15, 2015, 12:52:46 pm »
Hola!

Siguiendo con las prácticas en PyQT4, traigo una aplicación "juego" que luce así:
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Enseguida explico más o menos en que consiste.

La aplicación se encarga de generar Números/Letras/Números y Letras (según cada gusto) de forma totalmente aleatoria, con la longitud que tu desees. Además de seleccionar un tiempo "límite" para memorizar el valor generado, una vez acabado este tiempo límite, el valor es oculto, para que tu escribas la respuesta y evaluar si lo que memorizaste corresponde realmente a la cifra que generó y mostró por los X segundos que lo configuraste.

Una vez lanzada la aplicación y configurada, damos clic en ¡Establecer Configuración! , lo que nos da un nuevo cuadro, que luce así:
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Damos clic en "Comenzar" y tendremos esto:
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Una vez acabado el tiempo, el QLineEdit se resetea para que ingreses lo que memorizaste:
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Una vez ingresado el valor que memorizaste, presiona ENTER, si el valor fue correcto, entonces tu racha aumentará en +1 , de lo contrario se reiniciará a 0.
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Sin más que agregar, el código:
Código: Python
  1. # -*- coding: utf-8 -*-
  2. '''
  3. Juego Memoriza :: Entrenando tu Memoria
  4. Autor: JaAViEr | 0x5d
  5. Twitter: https://twitter.com/javieresteban__
  6. Website: http://codigo.ga
  7. '''
  8. from PyQt4 import QtCore, QtGui
  9. import sys
  10. from random import randint, sample
  11. import threading
  12. from time import sleep
  13.  
  14. try:
  15.        
  16.         _fromUtf8 = QtCore.QString.fromUtf8
  17.  
  18. except AttributeError:
  19.        
  20.         def _fromUtf8(s):
  21.                
  22.                 return s
  23. try:
  24.  
  25.         _encoding = QtGui.QApplication.UnicodeUTF8
  26.         def _translate(context, text, disambig):
  27.                
  28.                 return QtGui.QApplication.translate(context, text, disambig, _encoding)
  29.  
  30. except AttributeError:
  31.        
  32.         def _translate(context, text, disambig):
  33.        
  34.                 return QtGui.QApplication.translate(context, text, disambig)
  35.  
  36. class formA(QtGui.QWidget):
  37.  
  38.         def __init__(self, parent=None):
  39.        
  40.                 self.largo = 4
  41.                 QtGui.QWidget.__init__(self, parent)
  42.                 self.resize(359, 131)
  43.                 self.gridLayout = QtGui.QGridLayout(self)
  44.                 self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
  45.                 self.tabWidget_inicial = QtGui.QTabWidget(self)
  46.                 self.tabWidget_inicial.setStyleSheet(_fromUtf8("font-weight:bold;"))
  47.                 self.tabWidget_inicial.setObjectName(_fromUtf8("tabWidget_inicial"))
  48.                 self.tab = QtGui.QWidget()
  49.                 self.tab.setObjectName(_fromUtf8("tab"))
  50.                 self.gridLayout_2 = QtGui.QGridLayout(self.tab)
  51.                 self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
  52.                 self.label_tipo = QtGui.QLabel(self.tab)
  53.                 self.label_tipo.setObjectName(_fromUtf8("label_tipo"))
  54.                 self.gridLayout_2.addWidget(self.label_tipo, 0, 2, 1, 1)
  55.                 self.pushButton_comenzar = QtGui.QPushButton(self.tab)
  56.                 self.pushButton_comenzar.setObjectName(_fromUtf8("pushButton_comenzar"))
  57.                 self.gridLayout_2.addWidget(self.pushButton_comenzar, 2, 0, 1, 3)
  58.                 self.spinBox_largo = QtGui.QSpinBox(self.tab)
  59.                 self.spinBox_largo.setMinimum(1)
  60.                 self.spinBox_largo.setProperty("value", 4)
  61.                 self.spinBox_largo.setObjectName(_fromUtf8("spinBox_largo"))
  62.                 self.gridLayout_2.addWidget(self.spinBox_largo, 1, 0, 1, 1)
  63.                 self.comboBox_tipo = QtGui.QComboBox(self.tab)
  64.                 self.comboBox_tipo.setObjectName(_fromUtf8("comboBox_tipo"))
  65.                 self.comboBox_tipo.addItem(_fromUtf8(""))
  66.                 self.comboBox_tipo.addItem(_fromUtf8(""))
  67.                 self.comboBox_tipo.addItem(_fromUtf8(""))
  68.                 self.gridLayout_2.addWidget(self.comboBox_tipo, 1, 2, 1, 1)
  69.                 self.label_largo = QtGui.QLabel(self.tab)
  70.                 self.label_largo.setObjectName(_fromUtf8("label_largo"))
  71.                 self.gridLayout_2.addWidget(self.label_largo, 0, 0, 1, 1)
  72.                 self.label_tiempo = QtGui.QLabel(self.tab)
  73.                 self.label_tiempo.setObjectName(_fromUtf8("label_tiempo"))
  74.                 self.gridLayout_2.addWidget(self.label_tiempo, 0, 1, 1, 1)
  75.                 self.spinBox_tiempo = QtGui.QSpinBox(self.tab)
  76.                 self.spinBox_tiempo.setPrefix(_fromUtf8(""))
  77.                 self.spinBox_tiempo.setObjectName(_fromUtf8("spinBox_tiempo"))
  78.                 self.spinBox_tiempo.setMinimum(1)
  79.                 self.gridLayout_2.addWidget(self.spinBox_tiempo, 1, 1, 1, 1)
  80.                 self.tabWidget_inicial.addTab(self.tab, _fromUtf8(""))
  81.                 self.gridLayout.addWidget(self.tabWidget_inicial, 0, 0, 1, 1)
  82.                
  83.                 self.valores_elementos()
  84.                 self.connect(self.pushButton_comenzar, QtCore.SIGNAL("clicked()"), self.establecer_configuracion)
  85.                
  86.         def establecer_configuracion(self):
  87.        
  88.                 self.tiempo = int(self.spinBox_tiempo.value())
  89.                 self.largo = int(self.spinBox_largo.value())                   
  90.                 form_b.show()
  91.                 form_b.label_segundos_restantes.setText("%s segundos" % self.tiempo)
  92.  
  93.        
  94.         def valores_elementos(self):
  95.                
  96.                 self.setWindowTitle(_translate("self", "Memoriza :: www.codigo.ga", None))
  97.                 self.label_tipo.setText(_translate("self", "Tipo de juego", None))
  98.                 self.pushButton_comenzar.setText(_translate("self", "¡Establecer configuración!", None))
  99.                 self.comboBox_tipo.setItemText(0, _fromUtf8("Números"))
  100.                 self.comboBox_tipo.setItemText(1, _translate("self", "Letras", None))
  101.                 self.comboBox_tipo.setItemText(2, _translate("self", "Números y Letras", None))
  102.                 self.label_largo.setText(_translate("self", "Largo", None))
  103.                 self.label_tiempo.setText(_translate("self", "Tiempo para memorizar", None))
  104.                 self.spinBox_tiempo.setSuffix(_fromUtf8(" segundos"))
  105.                 self.tabWidget_inicial.setTabText(self.tabWidget_inicial.indexOf(self.tab), _translate("self", "Configuración de Memoriza", None))
  106.  
  107.                
  108. class formB(QtGui.QWidget):
  109.  
  110.         def __init__(self, parent=None):
  111.        
  112.                 self.valor_generado = ""
  113.                 self.racha = 0
  114.                 QtGui.QWidget.__init__(self, parent)
  115.                 self.setObjectName(_fromUtf8("self"))
  116.                 self.resize(215, 104)
  117.                 self.gridLayout = QtGui.QGridLayout(self)
  118.                 self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
  119.                 self.splitter = QtGui.QSplitter(self)
  120.                 self.splitter.setOrientation(QtCore.Qt.Vertical)
  121.                 self.splitter.setObjectName(_fromUtf8("splitter"))
  122.                 self.label_memoriza = QtGui.QLabel(self.splitter)
  123.                 self.label_memoriza.setStyleSheet(_fromUtf8("font-weight: bold; font-size: 17px;"))
  124.                 self.label_memoriza.setObjectName(_fromUtf8("label_memoriza"))
  125.                 self.lineEdit_valor_memorizar = QtGui.QLineEdit(self.splitter)
  126.                 self.lineEdit_valor_memorizar.setReadOnly(True)
  127.                 self.lineEdit_valor_memorizar.setObjectName(_fromUtf8("lineEdit_valor_memorizar"))
  128.                 self.gridLayout.addWidget(self.splitter, 0, 0, 1, 2)
  129.                 self.label_tiempo_restante = QtGui.QLabel(self)
  130.                 self.label_tiempo_restante.setObjectName(_fromUtf8("label_tiempo_restante"))
  131.                 self.gridLayout.addWidget(self.label_tiempo_restante, 1, 0, 1, 1)
  132.                 self.label_segundos_restantes = QtGui.QLabel(self)
  133.                 self.label_segundos_restantes.setStyleSheet(_fromUtf8("font-style: italic; font-weight: bold;"))
  134.                 self.label_segundos_restantes.setObjectName(_fromUtf8("label_segundos_restantes"))
  135.                 self.gridLayout.addWidget(self.label_segundos_restantes, 1, 1, 1, 1)
  136.                 self.pushButton_comenzar = QtGui.QPushButton(self)
  137.                 self.pushButton_comenzar.setObjectName(_fromUtf8("pushButton_comenzar"))
  138.                 self.gridLayout.addWidget(self.pushButton_comenzar, 3, 0, 1, 2)
  139.                 self.label_racha = QtGui.QLabel(self)
  140.                 self.label_racha.setObjectName(_fromUtf8("label_racha"))
  141.                 self.gridLayout.addWidget(self.label_racha, 2, 0, 1, 1)
  142.                 self.label_valor_racha = QtGui.QLabel(self)
  143.                 self.label_valor_racha.setStyleSheet(_fromUtf8("font-weight:  bold;"))
  144.                 self.label_valor_racha.setObjectName(_fromUtf8("label_valor_racha"))
  145.                 self.gridLayout.addWidget(self.label_valor_racha, 2, 1, 1, 1)
  146.                
  147.                 self.connect(self.pushButton_comenzar, QtCore.SIGNAL("clicked()"), self.empezar)
  148.                 self.connect(self.pushButton_comenzar, QtCore.SIGNAL("returnPressed()"), self.empezar)
  149.                 self.connect(self.lineEdit_valor_memorizar, QtCore.SIGNAL("returnPressed()"), self.cambia_valor)
  150.                 self.renombrar_elementos_widget()
  151.                 QtCore.QMetaObject.connectSlotsByName(self)
  152.  
  153.         def cambia_valor(self):
  154.                
  155.                 qstring = str(self.lineEdit_valor_memorizar.text())
  156. #               mensaje = QtGui.QMessageBox()
  157.                
  158.                 if qstring == self.valor_generado and len(self.valor_generado) > 0 and len(qstring) > 0:
  159.                
  160. #                       mensaje.setText(_fromUtf8("¡Respuesta correcta!"))
  161.                         self.pushButton_comenzar.setFocus(True)
  162.                         self.lineEdit_valor_memorizar.setText("")
  163.                         self.valor_generado = False
  164.                         self.racha = self.racha + 1                    
  165.                         self.label_valor_racha.setText(str(self.racha))
  166.                         self.empezar()
  167.                        
  168.                 else:
  169.                
  170.                         self.lineEdit_valor_memorizar.setText("")
  171.                         self.valor_generado = False
  172. #                       mensaje.setText(_fromUtf8("¡Respuesta Incorrecta!"))
  173.                         self.racha = 0
  174.                         self.correr = False
  175.                         self.label_valor_racha.setText("0")
  176.                         self.empezar()
  177.                
  178. #               mensaje.exec_()
  179.                
  180.         def generar_numero(self):
  181.                
  182.                 valor = ""
  183.                 for i in range(form_a.largo,):
  184.                        
  185.                         valor = valor + str(randint(0, 9))
  186.  
  187.                 return valor
  188.        
  189.         def generar_letras(self):
  190.                
  191.                 valor = ""
  192.                 lista = list("abcdefghijklmnopqrstuvwxyz")
  193.                 len_lista = len(lista) - 1
  194.                 for i in range(form_a.largo):
  195.                        
  196.                         valor = valor + lista[randint(0,len_lista)]
  197.  
  198.                 return valor
  199.                
  200.         def generar_alfanumerico(self):
  201.                
  202.                 valor = ""
  203.                 lista_abc = list("abcdefghijklmnopqrstuvwxyz")
  204.                 lista_digitos = list("0123456789")
  205.                 largo = form_a.largo / 2
  206.                 len_lista_abc = len(lista_abc) - 1
  207.                 len_lista_digitos = len(lista_digitos) - 1
  208.                 for i in range(largo):
  209.                        
  210.                         valor = valor + lista_abc[randint(0,len_lista_abc)]
  211.                        
  212.                 for i in range(largo):
  213.                        
  214.                         valor = valor + lista_digitos[randint(0,len_lista_digitos)]
  215.                
  216.                 return ''.join(sample(valor, len(valor)))
  217.                
  218.         def empezar(self):
  219.                
  220.                 opcion = form_a.comboBox_tipo.currentIndex()
  221.                 self.lineEdit_valor_memorizar.setReadOnly(True)
  222.                 if opcion == 0:
  223.                         self.valor_generado = self.generar_numero()
  224.                         self.lineEdit_valor_memorizar.setText(self.valor_generado)
  225.                 elif opcion == 1:
  226.                         self.valor_generado = self.generar_letras()
  227.                         self.lineEdit_valor_memorizar.setText(self.valor_generado)
  228.                 elif opcion == 2:
  229.                         self.valor_generado = self.generar_alfanumerico()
  230.                         self.lineEdit_valor_memorizar.setText(self.valor_generado)
  231.                        
  232.                 t = Timer()
  233.                 t.start()
  234.                
  235.         def renombrar_elementos_widget(self):
  236.                
  237.                 self.setWindowTitle(_translate("self", "Tablero", None))
  238.                 self.label_memoriza.setText(_translate("self", "<html><head/><body><p align=\"center\"><span style=\" font-size:13pt;\">Memoriza</span></p></body></html>", None))
  239.                 self.lineEdit_valor_memorizar.setText(_translate("self", "", None))
  240.                 self.label_tiempo_restante.setText(_translate("self", "Tiempo restante", None))
  241.                 self.label_segundos_restantes.setText(_translate("self", "10 segundos", None))
  242.                 self.label_racha.setText(_translate("self", "Racha", None))
  243.                 self.label_valor_racha.setText(_translate("self", "0", None))
  244.                 self.pushButton_comenzar.setText(_translate("self", "Comenzar", None))
  245.  
  246. class Timer(threading.Thread):
  247.  
  248.         def __init__(self, parent=None):
  249.                
  250.                 threading.Thread.__init__(self, parent)
  251.        
  252.         def run(self):
  253.        
  254.                 tiempo_restante = form_a.tiempo
  255.                
  256.                 for i in range(form_a.tiempo):                 
  257.                         form_b.label_segundos_restantes.setText("%s segundos" % tiempo_restante)
  258.                         tiempo_restante = tiempo_restante - 1
  259.                         sleep(1)
  260.                
  261.                 form_b.label_segundos_restantes.setText("0 segundos")
  262.                 form_b.lineEdit_valor_memorizar.setText("")
  263.                 form_b.lineEdit_valor_memorizar.setReadOnly(False)
  264.                 form_b.lineEdit_valor_memorizar.setFocus(True)
  265.                
  266. app = QtGui.QApplication(sys.argv)
  267. form_b = formB()
  268. form_a = formA()
  269. form_a.show()
  270. app.exec_()

Fuente: No tienes permisos para ver links. Registrate o Entra con tu cuenta

Saludos, Javier.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Código-Python] If file exists Python puro - JaAViEr

Iniciado por JaAViEr

Respuestas: 5
Vistas: 1850
Último mensaje Agosto 21, 2011, 09:29:56 pm
por blozzter
[Python] Mini clase para enviar datos POST - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1771
Último mensaje Diciembre 08, 2011, 05:24:26 am
por JaAViEr
[Python] Extraer enlaces e imágenes de un sitio web. - JaAViEr(0x5d)

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1963
Último mensaje Diciembre 08, 2011, 09:17:23 pm
por JaAViEr
[Código-Python] Code & Decode Archivo a HEX - JaAViEr

Iniciado por JaAViEr

Respuestas: 2
Vistas: 1291
Último mensaje Agosto 01, 2011, 09:35:42 pm
por JaAViEr
[Código-Python] Usuarios y Rangos Underc0de.org - JaAViEr

Iniciado por JaAViEr

Respuestas: 13
Vistas: 3371
Último mensaje Diciembre 08, 2011, 04:04:05 am
por JaAViEr