En este artículo, discutiremos cómo manejar las entradas del teclado en el módulo arcade de Python.
En Arcade, puede verificar fácilmente qué botón del teclado está presionado y realizar tareas de acuerdo con eso.
Para ello, vamos a utilizar estas funciones:
- on_key_press()
- on_key_release()
Sintaxis:
- on_key_press(símbolo,modificadores)
- on_key_release (símbolo, modificadores)
Parámetros:
- símbolo: Tecla que fue golpeada
- modificadores: Bitwise ‘y’ de todos los modificadores (shift, ctrl, num lock) presionados durante este evento.
Se llamará a la función on_key_press() cada vez que el usuario presione un botón del teclado. De manera similar, se llamará a on_key_released() cada vez que un usuario suelte un botón del teclado.
Ejemplo 1:
En este ejemplo, crearemos un programa simple utilizando el módulo arcade que verificará si la tecla de flecha superior está presionada o no.
Luego crearemos tres funciones dentro de esta clase.
- on_draw(): Dentro de esta función, iniciaremos el renderizado usando arcade.start_render().
- on_key_press(): esta función se llamará cada vez que se presione una tecla del teclado. Dentro de esta función, verificaremos si la tecla presionada es la tecla de flecha hacia arriba y luego imprimiremos «se presiona la tecla de flecha superior».
- on_key_release(): esta función se llamará cada vez que se suelte una tecla del teclado. Dentro de esta función, verificaremos si la tecla liberada es la tecla de flecha hacia arriba y luego imprimiremos «la tecla de flecha superior está liberada».
A continuación se muestra la implementación:
Python3
# Importing arcade module import arcade # Creating MainGame class class MainGame(arcade.Window): def __init__(self): super().__init__(600, 600, title="Keyboard Inputs") # Creating on_draw() function to draw on the screen def on_draw(self): arcade.start_render() # Creating function to check button is pressed # or not def on_key_press(self, symbol,modifier): # Checking the button pressed # is up arrow key or not if symbol == arcade.key.UP: print("Upper arrow key is pressed") # Creating function to check button is released # or not def on_key_release(self, symbol, modifier): # Checking the button pressed # is up arrow key or not if symbol == arcade.key.UP: print("Upper arrow key is released") # Calling MainGame class MainGame() arcade.run()
Producción:
Ejemplo 2:
En este ejemplo, movemos el reproductor de acuerdo con las entradas del teclado.
Para ello, vamos a crear una clase MainGame(). Dentro de esta clase primero, vamos a inicializar algunas variables para las coordenadas x e y del sprite del jugador y la velocidad x e y del jugador, luego crearemos 4 funciones dentro de esta clase.
- on_draw(): Dentro de esta función, dibujaremos nuestro reproductor y comenzaremos el renderizado.
- setup(): en esta función, inicializaremos nuestra cámara y el objeto de escena, luego cargaremos los sprites de nuestro reproductor y plataforma. Después de eso, llamaremos a la función PhysicsEnginePlatformer().
- on_update(): en esta función, actualizaremos las coordenadas x e y del sprite del jugador agregando el valor de la variable vel_x y vel_y,
- on_key_press(): En esta función cambiaremos el valor de las variables vel_x y vel_y según la tecla del teclado que se presione.
- on_key_release(): En esta función cambiaremos el valor de las variables vel_x y vel_y según la tecla del teclado que se suelte.
A continuación se muestra la implementación:
Python3
# Importing arcade module import arcade # Creating MainGame class class MainGame(arcade.Window): def __init__(self): super().__init__(600, 600, title="Player Movement") # Initializing the initial x and y coordinated self.x = 250 self.y = 250 # Initializing a variable to store # the velocity of the player self.vel_x = 0 self.vel_y = 0 # Creating on_draw() function to draw on the screen def on_draw(self): arcade.start_render() # Drawing the rectangle using # draw_rectangle_filled function arcade.draw_circle_filled(self.x, self.y,25, arcade.color.GREEN ) # Creating on_update function to # update the x coordinate def on_update(self,delta_time): self.x += self.vel_x * delta_time self.y += self.vel_y * delta_time # Creating function to change the velocity # when button is pressed def on_key_press(self, symbol,modifier): # Checking the button pressed # and changing the value of velocity if symbol == arcade.key.UP: self.vel_y = 300 print("Up arrow key is pressed") elif symbol == arcade.key.DOWN: self.vel_y = -300 print("Down arrow key is pressed") elif symbol == arcade.key.LEFT: self.vel_x = -300 print("Left arrow key is pressed") elif symbol == arcade.key.RIGHT: self.vel_x = 300 print("Right arrow key is pressed") # Creating function to change the velocity # when button is released def on_key_release(self, symbol, modifier): # Checking the button released # and changing the value of velocity if symbol == arcade.key.UP: self.vel_y = 0 elif symbol == arcade.key.DOWN: self.vel_y = 0 elif symbol == arcade.key.LEFT: self.vel_x = 0 elif symbol == arcade.key.RIGHT: self.vel_x = 0 # Calling MainGame class MainGame() arcade.run()
Producción:
Publicación traducida automáticamente
Artículo escrito por imranalam21510 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA