PyQt5 – El juego de colores

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 segundos

Pasos 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *