Enero 22, 2018, 10:57:21 am

Autor Tema: [PyQT4] Memoriza :: "Entrenando tu memoria" :: JaAViEr  (Leído 1049 veces)

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

Desconectado JaAViEr

  • ¡ Programming the world !
  • Colaborador
  • ****
  • Mensajes: 8218
  • http://ethereumchile.cl
    • Ver Perfil
    • Ethereum Chile
[PyQT4] Memoriza :: "Entrenando tu memoria" :: JaAViEr
« en: Mayo 15, 2015, 09:45:43 am »
Hola!

Siguiendo con las prácticas en PyQT4, traigo una aplicación "juego" que luce así:
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
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í:
You are not allowed to view links. Register or Login
Damos clic en "Comenzar" y tendremos esto:
You are not allowed to view links. Register or Login
Una vez acabado el tiempo, el QLineEdit se resetea para que ingreses lo que memorizaste:
You are not allowed to view links. Register or Login
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.
You are not allowed to view links. Register or Login
Sin más que agregar, el código:
Código: (python) You are not allowed to view links. Register or Login
# -*- 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_()

Fuente: You are not allowed to view links. Register or Login

Saludos, Javier.
¡MI TWITTER You are not allowed to view links. Register or Login!
You are not allowed to view links. Register or Login !


xx
[PyQT4] Inicio de Sesión estilo "Caja Fuerte" :: JaAViEr

Iniciado por JaAViEr

0 Respuestas
973 Vistas
Último mensaje Mayo 14, 2015, 05:06:31 pm
por JaAViEr
xx
"""EJEMPLO VISUAL BASIC PARA ENVIAR MAILS""""

Iniciado por angelsk

2 Respuestas
3474 Vistas
Último mensaje Abril 15, 2006, 10:39:16 am
por NetClass
exclamation
[Proyecto]PyDB - "Bases de Datos" fáciles en Python :: JaAViEr | 0x5d

Iniciado por JaAViEr

3 Respuestas
1463 Vistas
Último mensaje Julio 29, 2013, 11:15:35 pm
por CodeSource
exclamation
[Código-Python]Ultimos "posters" en CPH - JaAViEr

Iniciado por JaAViEr

2 Respuestas
956 Vistas
Último mensaje Julio 05, 2011, 05:55:07 pm
por JaAViEr
thumbup
matar msn y apagar ordena """VIRUS""" para novatos

Iniciado por Spiff

15 Respuestas
8549 Vistas
Último mensaje Junio 03, 2007, 08:45:41 pm
por doggfather
xx
Ayuda con lineas usando "IF" "&" y "FINDSTR" (codigo propio)

Iniciado por hack-ad

0 Respuestas
1381 Vistas
Último mensaje Mayo 21, 2013, 02:58:10 pm
por hack-ad
question
Error de aplicacion - La memoria no se puede "read"

Iniciado por zeth

2 Respuestas
1977 Vistas
Último mensaje Febrero 10, 2011, 09:28:55 pm
por zeth
question
Dirección de memoria de un "char"

Iniciado por Binary_Death

12 Respuestas
2242 Vistas
Último mensaje Mayo 30, 2011, 10:24:44 am
por jep
exclamation
Zuckerberg: Google "gran empresa" pero Facebook tiene "mejores herramientas"

Iniciado por cemasmas

1 Respuestas
1021 Vistas
Último mensaje Diciembre 06, 2011, 02:34:35 am
por .:.IlcOn14.:.
xx
phpMyAdmin "cookie.auth.lib.php" and "error.php" Cross Site Scripting

Iniciado por MyM

0 Respuestas
2553 Vistas
Último mensaje Agosto 29, 2005, 11:27:54 pm
por MyM