Requisito previo: Introducción a PyQt5
PyQt5 es un kit de herramientas GUI multiplataforma, un conjunto de enlaces de Python para Qt v5. Uno puede desarrollar una aplicación de escritorio interactiva con tanta facilidad debido a las herramientas y la simplicidad que ofrece esta biblioteca.
Ahora, veremos cómo podemos hacer que la etiqueta salte. A veces es necesario hacer que la etiqueta salte mientras se diseñan juegos 2-D en PyQt5. La etiqueta de salto es una etiqueta que cuando se presiona la tecla de salto (aquí la barra espaciadora) sube y su velocidad de subida disminuye y cuando alcanza la altura máxima , comienza a bajar con el aumento de la velocidad. La velocidad disminuye al subir y disminuye al bajar por el efecto de la gravedad.
Concepto: podemos hacer que la etiqueta salte cambiando su coordenada Y con el tiempo, podemos obtener la coordenada Y para cada tiempo con la ayuda de la fórmula básica de la mecánica clásica, es decir, la siguiente:
Fuerza = 1/2 * masa * velocidad^2
Al disminuir este valor de fuerza desde la coordenada Y inicial, nos dará la nueva coordenada Y para cada vez y luego disminuir la velocidad.
Pasos de implementación:
1. Cree una ventana principal.
2. Cree una bandera de salto y una variable de velocidad y masa.
3 . Crea una etiqueta.
4. Establezca la geometría de la etiqueta y la hoja de estilo.
5. Anular el evento de pulsación de tecla.
6. Dentro de la verificación del evento de pulsación de tecla cuando se pulsa la tecla de la barra espaciadora.
7. Si se presiona la tecla de la barra espaciadora, haga que la variable de salto sea verdadera.
8. Cree un objeto de temporizador y agregue una acción al temporizador que se llama cada 50 milisegundos.
9. Dentro de la acción del temporizador, obtenga la coordenada Y de la etiqueta y verifique si la bandera de salto es verdadera.
10Si la bandera de salto es verdadera, calcule la fuerza y disminuya el valor de fuerza de la coordenada Y y establezca la nueva posición en la etiqueta.
11. Si la velocidad se vuelve cero, haga que la masa sea negativa, y si la etiqueta vuelve a la posición normal, haga que la bandera de salto sea falsa y restablezca el valor de masa y velocidad.
A continuación se muestra la implementación:
Python3
# importing required libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys # Window class class Window(QMainWindow): def __init__(self): super().__init__() # setting title self.setWindowTitle("Python ") # width of window self.w_width = 500 # height of window self.w_height = 500 # setting geometry self.setGeometry(100, 100, self.w_width, self.w_height) # calling method self.UiComponents() # showing all the widgets self.show() # speed variable self.speed = 5 self.mass = 1 # jump flag self.jump = False # method for components def UiComponents(self): # creating a label self.label = QLabel(self) # label width self.l_width = 40 # label height self.l_height = 40 # setting geometry to the label self.label.setGeometry(200, 200, self.l_width, self.l_height) # setting stylesheet to the label self.label.setStyleSheet("QLabel" "{" "border : 4px solid darkgreen;" "background : lightgreen;" "}") # creating a timer object timer = QTimer(self) # setting timer start time timer.start(50) # adding action to the timer timer.timeout.connect(self.show_time) # method called by the timer def show_time(self): # checking jump flag if self.jump: y = self.label.y() # calculate force (F). # F = 1 / 2 * mass * velocity ^ 2. # here we are not using ( 1/2 ) Force = self.mass * (self.speed ** 2) # change in the y co-ordinate y -= Force self.label.move(200, y) # decreasing velocity while going up # and become negative while coming down self.speed = self.speed - 1 # object reached its maximum height if self.speed < 0: # negative sign is added to # counter negative velocity self.mass = -1 # objected reaches its original state if self.speed == -6: # making jump equal to false self.jump = False # setting original values to # speed and mass self.speed = 5 self.mass = 1 # override the key press event def keyPressEvent(self, event): # if space bar is pressed if event.key() == Qt.Key_Space: # make the jump flag true self.jump = True # 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