En este artículo veremos cómo podemos crear un juego de colores usando PyQt5. En este juego, el usuario tiene que obtener la máxima puntuación nombrando el nombre del color del color de la palabra dada y, para confundir al jugador, el texto tendrá un nombre de color diferente. A continuación se muestra cómo se ve el juego de colores.
Pasos de implementación de la GUI:
1. Cree una etiqueta principal para mostrar el nombre del juego, configure sus características como el color de alineación, etc.
2. Cree una etiqueta de instrucción para decirle la instrucción al usuario
3. Cree un botón para iniciar/restablecer el juego
4. Crear etiqueta para mostrar la puntuación
5. Crear una edición de línea para obtener la entrada del usuario
6. Crear una etiqueta para la cuenta regresiva de 30 segundosPasos de implementación de back-end:
1. Cree un indicador de inicio, una lista de colores, una variable de valor de contador y una variable de valor de puntaje
2. Cree un objeto de temporizador que llame a un método después de un segundo
3. Dentro del método de temporizador, verifique el indicador de inicio si es true establece el valor del contador en la etiqueta del contador y reduce el valor del contador
4. Verifique si la variable del contador es igual a cero, luego haga que el indicador de inicio sea falso y deshabilite la edición de línea
5. Agregue acción al botón de inicio
6. Dentro de la acción del botón de inicio haga que el valor inicial sea verdadero establezca el valor de conteo en 30 y borre el texto de edición de línea
7. Obtenga la opción aleatoria de la lista de colores y configure ese color en la etiqueta de color
8. Obtenga nuevamente la opción aleatoria de la lista y configure ese texto en la etiqueta
9. Agregue acción a la edición de línea cuando se presiona enter
10. Dentro de la acción de edición de línea, verifique el texto ingresado con la opción aleatoria si las coincidencias incrementan el valor de puntaje y cambian el color de la etiqueta de color y el texto con otro valor aleatorio.
A continuación se muestra la implementación.
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import random import sys class Window(QMainWindow): def __init__(self): super().__init__() # setting title self.setWindowTitle("Python ") # setting geometry self.setGeometry(100, 100, 500, 500) # calling method self.UiComponents() # showing all the widgets self.show() # counter self.count_value = 30 # score self.score_value = 0 # start flag self.start_Flag = False # list of possible colour. self.color_list = ['Red', 'Blue', 'Green', 'Pink', 'Black', 'Yellow', 'Orange', 'Purple', 'Brown'] # method for components def UiComponents(self): # creating head label head = QLabel("Color Game", self) # setting geometry to the head head.setGeometry(100, 10, 300, 60) # font font = QFont('Times', 14) font.setBold(True) font.setItalic(True) font.setUnderline(True) # setting font to the head head.setFont(font) # setting alignment of the head head.setAlignment(Qt.AlignCenter) # instruction label instruction = QLabel("Instruction : Enter the Color not the text. " "Press Start button to start the game " "Note : Time limit for game is 30 seconds", self) # making it multi line instruction.setWordWrap(True) # setting geometry to the label instruction.setGeometry(20, 60, 460, 60) # creating start button start = QPushButton("Start / Reset", self) # setting geometry to the push button start.setGeometry(200, 120, 100, 35) # adding action to the start button start.clicked.connect(self.start_action) # creating a score label self.score = QLabel("Score : 0", self) # setting geometry self.score.setGeometry(160, 170, 180, 50) # setting alignment self.score.setAlignment(Qt.AlignCenter) # setting font self.score.setFont(QFont('Times', 16)) # setting style sheet self.score.setStyleSheet("QLabel" "{" "border : 2px solid black;" "color : green;" "background : lightgrey;" "}") # creating label to show color self.color = QLabel("Color Name", self) # setting geometry self.color.setGeometry(50, 230, 400, 120) # setting alignment self.color.setAlignment(Qt.AlignCenter) # setting font self.color.setFont(QFont('Times', 30)) # creating a line edit self.input_text = QLineEdit(self) # setting geometry self.input_text.setGeometry(150, 340, 200, 50) # setting font self.input_text.setFont(QFont('Arial', 14)) # making line edit disabled self.input_text.setDisabled(True) # adding action to it when enter is pressed self.input_text.returnPressed.connect(self.input_action) # creating a timer label self.count = QLabel("30", self) # setting geometry self.count.setGeometry(225, 430, 50, 50) # setting alignment self.count.setAlignment(Qt.AlignCenter) # setting font self.count.setFont(QFont('Times', 14)) # setting style sheet self.count.setStyleSheet("border : 2px solid black;" "background : lightgrey;") # creating a timer object timer = QTimer(self) # adding action to the timer timer.timeout.connect(self.show_time) # start timer timer.start(1000) def show_time(self): if self.start_Flag: # showing count value to label self.count.setText(str(self.count_value)) # checking if count value is zero if self.count_value == 0: # making start flag to false self.start_Flag = False # making line edit widget disable self.input_text.setDisabled(True) # decrementing the count value self.count_value -= 1 def start_action(self): # making start flag true self.start_Flag = True # resetting score self.score.setText("Score : 0") self.score_value = 0 # resetting count value self.count_value = 30 # clearing line edit text self.input_text.clear() # making line edit enabled self.input_text.setEnabled(True) # getting random color self.random_color = random.choice(self.color_list) # making color choice random color self.random_color.lower() # setting random color to the label self.color.setStyleSheet("color : " + self.random_color + ";") # getting another random color name random_text = random.choice(self.color_list) # setting text to label self.color.setText(random_text) def input_action(self): # get the line edit test text = self.input_text.text() # making text lower case text.lower() # checking text with random color if text == self.random_color: # clearing line edit text self.input_text.clear() # incrementing score value self.score_value += 1 # setting score to the score label self.score.setText("Score : " + str(self.score_value)) # getting random color self.random_color = random.choice(self.color_list) # making color choice random color self.random_color.lower() # setting random color to the label self.color.setStyleSheet("color : " + self.random_color + ";") # getting another random color name random_text = random.choice(self.color_list) # setting text to label self.color.setText(random_text) # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App.exec())
Producción :
Publicación traducida automáticamente
Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA