# -*- coding: utf-8 -*-
'''
Juego Memoriza :: Entrenando tu Memoria
Autor: JaAViEr | 0x5d
Twitter: https://twitter.com/javieresteban__
Website: http://codigo.ga
'''
from PyQt4 import QtCore, QtGui
import sys
from random import randint, sample
import threading
from time import sleep
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class formA(QtGui.QWidget):
def __init__(self, parent=None):
self.largo = 4
QtGui.QWidget.__init__(self, parent)
self.resize(359, 131)
self.gridLayout = QtGui.QGridLayout(self)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.tabWidget_inicial = QtGui.QTabWidget(self)
self.tabWidget_inicial.setStyleSheet(_fromUtf8("font-weight:bold;"))
self.tabWidget_inicial.setObjectName(_fromUtf8("tabWidget_inicial"))
self.tab = QtGui.QWidget()
self.tab.setObjectName(_fromUtf8("tab"))
self.gridLayout_2 = QtGui.QGridLayout(self.tab)
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
self.label_tipo = QtGui.QLabel(self.tab)
self.label_tipo.setObjectName(_fromUtf8("label_tipo"))
self.gridLayout_2.addWidget(self.label_tipo, 0, 2, 1, 1)
self.pushButton_comenzar = QtGui.QPushButton(self.tab)
self.pushButton_comenzar.setObjectName(_fromUtf8("pushButton_comenzar"))
self.gridLayout_2.addWidget(self.pushButton_comenzar, 2, 0, 1, 3)
self.spinBox_largo = QtGui.QSpinBox(self.tab)
self.spinBox_largo.setMinimum(1)
self.spinBox_largo.setProperty("value", 4)
self.spinBox_largo.setObjectName(_fromUtf8("spinBox_largo"))
self.gridLayout_2.addWidget(self.spinBox_largo, 1, 0, 1, 1)
self.comboBox_tipo = QtGui.QComboBox(self.tab)
self.comboBox_tipo.setObjectName(_fromUtf8("comboBox_tipo"))
self.comboBox_tipo.addItem(_fromUtf8(""))
self.comboBox_tipo.addItem(_fromUtf8(""))
self.comboBox_tipo.addItem(_fromUtf8(""))
self.gridLayout_2.addWidget(self.comboBox_tipo, 1, 2, 1, 1)
self.label_largo = QtGui.QLabel(self.tab)
self.label_largo.setObjectName(_fromUtf8("label_largo"))
self.gridLayout_2.addWidget(self.label_largo, 0, 0, 1, 1)
self.label_tiempo = QtGui.QLabel(self.tab)
self.label_tiempo.setObjectName(_fromUtf8("label_tiempo"))
self.gridLayout_2.addWidget(self.label_tiempo, 0, 1, 1, 1)
self.spinBox_tiempo = QtGui.QSpinBox(self.tab)
self.spinBox_tiempo.setPrefix(_fromUtf8(""))
self.spinBox_tiempo.setObjectName(_fromUtf8("spinBox_tiempo"))
self.spinBox_tiempo.setMinimum(1)
self.gridLayout_2.addWidget(self.spinBox_tiempo, 1, 1, 1, 1)
self.tabWidget_inicial.addTab(self.tab, _fromUtf8(""))
self.gridLayout.addWidget(self.tabWidget_inicial, 0, 0, 1, 1)
self.valores_elementos()
self.connect(self.pushButton_comenzar, QtCore.SIGNAL("clicked()"), self.establecer_configuracion)
def establecer_configuracion(self):
self.tiempo = int(self.spinBox_tiempo.value())
self.largo = int(self.spinBox_largo.value())
form_b.show()
form_b.label_segundos_restantes.setText("%s segundos" % self.tiempo)
def valores_elementos(self):
self.setWindowTitle(_translate("self", "Memoriza :: www.codigo.ga", None))
self.label_tipo.setText(_translate("self", "Tipo de juego", None))
self.pushButton_comenzar.setText(_translate("self", "¡Establecer configuración!", None))
self.comboBox_tipo.setItemText(0, _fromUtf8("Números"))
self.comboBox_tipo.setItemText(1, _translate("self", "Letras", None))
self.comboBox_tipo.setItemText(2, _translate("self", "Números y Letras", None))
self.label_largo.setText(_translate("self", "Largo", None))
self.label_tiempo.setText(_translate("self", "Tiempo para memorizar", None))
self.spinBox_tiempo.setSuffix(_fromUtf8(" segundos"))
self.tabWidget_inicial.setTabText(self.tabWidget_inicial.indexOf(self.tab), _translate("self", "Configuración de Memoriza", None))
class formB(QtGui.QWidget):
def __init__(self, parent=None):
self.valor_generado = ""
self.racha = 0
QtGui.QWidget.__init__(self, parent)
self.setObjectName(_fromUtf8("self"))
self.resize(215, 104)
self.gridLayout = QtGui.QGridLayout(self)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.splitter = QtGui.QSplitter(self)
self.splitter.setOrientation(QtCore.Qt.Vertical)
self.splitter.setObjectName(_fromUtf8("splitter"))
self.label_memoriza = QtGui.QLabel(self.splitter)
self.label_memoriza.setStyleSheet(_fromUtf8("font-weight: bold; font-size: 17px;"))
self.label_memoriza.setObjectName(_fromUtf8("label_memoriza"))
self.lineEdit_valor_memorizar = QtGui.QLineEdit(self.splitter)
self.lineEdit_valor_memorizar.setReadOnly(True)
self.lineEdit_valor_memorizar.setObjectName(_fromUtf8("lineEdit_valor_memorizar"))
self.gridLayout.addWidget(self.splitter, 0, 0, 1, 2)
self.label_tiempo_restante = QtGui.QLabel(self)
self.label_tiempo_restante.setObjectName(_fromUtf8("label_tiempo_restante"))
self.gridLayout.addWidget(self.label_tiempo_restante, 1, 0, 1, 1)
self.label_segundos_restantes = QtGui.QLabel(self)
self.label_segundos_restantes.setStyleSheet(_fromUtf8("font-style: italic; font-weight: bold;"))
self.label_segundos_restantes.setObjectName(_fromUtf8("label_segundos_restantes"))
self.gridLayout.addWidget(self.label_segundos_restantes, 1, 1, 1, 1)
self.pushButton_comenzar = QtGui.QPushButton(self)
self.pushButton_comenzar.setObjectName(_fromUtf8("pushButton_comenzar"))
self.gridLayout.addWidget(self.pushButton_comenzar, 3, 0, 1, 2)
self.label_racha = QtGui.QLabel(self)
self.label_racha.setObjectName(_fromUtf8("label_racha"))
self.gridLayout.addWidget(self.label_racha, 2, 0, 1, 1)
self.label_valor_racha = QtGui.QLabel(self)
self.label_valor_racha.setStyleSheet(_fromUtf8("font-weight: bold;"))
self.label_valor_racha.setObjectName(_fromUtf8("label_valor_racha"))
self.gridLayout.addWidget(self.label_valor_racha, 2, 1, 1, 1)
self.connect(self.pushButton_comenzar, QtCore.SIGNAL("clicked()"), self.empezar)
self.connect(self.pushButton_comenzar, QtCore.SIGNAL("returnPressed()"), self.empezar)
self.connect(self.lineEdit_valor_memorizar, QtCore.SIGNAL("returnPressed()"), self.cambia_valor)
self.renombrar_elementos_widget()
QtCore.QMetaObject.connectSlotsByName(self)
def cambia_valor(self):
qstring = str(self.lineEdit_valor_memorizar.text())
# mensaje = QtGui.QMessageBox()
if qstring == self.valor_generado and len(self.valor_generado) > 0 and len(qstring) > 0:
# mensaje.setText(_fromUtf8("¡Respuesta correcta!"))
self.pushButton_comenzar.setFocus(True)
self.lineEdit_valor_memorizar.setText("")
self.valor_generado = False
self.racha = self.racha + 1
self.label_valor_racha.setText(str(self.racha))
self.empezar()
else:
self.lineEdit_valor_memorizar.setText("")
self.valor_generado = False
# mensaje.setText(_fromUtf8("¡Respuesta Incorrecta!"))
self.racha = 0
self.correr = False
self.label_valor_racha.setText("0")
self.empezar()
# mensaje.exec_()
def generar_numero(self):
valor = ""
for i in range(form_a.largo,):
valor = valor + str(randint(0, 9))
return valor
def generar_letras(self):
valor = ""
lista = list("abcdefghijklmnopqrstuvwxyz")
len_lista = len(lista) - 1
for i in range(form_a.largo):
valor = valor + lista[randint(0,len_lista)]
return valor
def generar_alfanumerico(self):
valor = ""
lista_abc = list("abcdefghijklmnopqrstuvwxyz")
lista_digitos = list("0123456789")
largo = form_a.largo / 2
len_lista_abc = len(lista_abc) - 1
len_lista_digitos = len(lista_digitos) - 1
for i in range(largo):
valor = valor + lista_abc[randint(0,len_lista_abc)]
for i in range(largo):
valor = valor + lista_digitos[randint(0,len_lista_digitos)]
return ''.join(sample(valor, len(valor)))
def empezar(self):
opcion = form_a.comboBox_tipo.currentIndex()
self.lineEdit_valor_memorizar.setReadOnly(True)
if opcion == 0:
self.valor_generado = self.generar_numero()
self.lineEdit_valor_memorizar.setText(self.valor_generado)
elif opcion == 1:
self.valor_generado = self.generar_letras()
self.lineEdit_valor_memorizar.setText(self.valor_generado)
elif opcion == 2:
self.valor_generado = self.generar_alfanumerico()
self.lineEdit_valor_memorizar.setText(self.valor_generado)
t = Timer()
t.start()
def renombrar_elementos_widget(self):
self.setWindowTitle(_translate("self", "Tablero", None))
self.label_memoriza.setText(_translate("self", "<html><head/><body><p align=\"center\"><span style=\" font-size:13pt;\">Memoriza</span></p></body></html>", None))
self.lineEdit_valor_memorizar.setText(_translate("self", "", None))
self.label_tiempo_restante.setText(_translate("self", "Tiempo restante", None))
self.label_segundos_restantes.setText(_translate("self", "10 segundos", None))
self.label_racha.setText(_translate("self", "Racha", None))
self.label_valor_racha.setText(_translate("self", "0", None))
self.pushButton_comenzar.setText(_translate("self", "Comenzar", None))
class Timer(threading.Thread):
def __init__(self, parent=None):
threading.Thread.__init__(self, parent)
def run(self):
tiempo_restante = form_a.tiempo
for i in range(form_a.tiempo):
form_b.label_segundos_restantes.setText("%s segundos" % tiempo_restante)
tiempo_restante = tiempo_restante - 1
sleep(1)
form_b.label_segundos_restantes.setText("0 segundos")
form_b.lineEdit_valor_memorizar.setText("")
form_b.lineEdit_valor_memorizar.setReadOnly(False)
form_b.lineEdit_valor_memorizar.setFocus(True)
app = QtGui.QApplication(sys.argv)
form_b = formB()
form_a = formA()
form_a.show()
app.exec_()