Responder a la entrada es vital para cualquier juego, y es bueno admitir el teclado para los usuarios que lo prefieren. Descubra cómo con la biblioteca arcade de Python.
La entrada del teclado es una parte esencial del desarrollo del juego y es crucial manejarla de manera efectiva para brindar una excelente experiencia de usuario. La biblioteca de Arcade proporciona una forma sencilla y eficiente de manejar la entrada del teclado en sus juegos de Python.
Crear un juego simple con un jugador
Puedes encontrar el código completo en este repositorio de GitHub.
Antes de sumergirse en el manejo de las entradas del teclado, asegúrese de tener pip instalado en su dispositivo. Use este comando para instalar la biblioteca arcade:
pip instalar arcade
Después de eso, crea el esqueleto de un juego simple:
importar arcada
ANCHO_PANTALLA = 640
PANTALLA_ALTURA = 480claseMi juego(arcada. Ventana):
definitivamente__en eso__(uno mismo, ancho, alto):
super().__init__(ancho, alto, "Mi juego")
arcade.set_background_color (arcade.color. BLANCO)definitivamenteen_dibujar(ser):
arcade.start_render()definitivamenteactualizar(uno mismo, delta_time):
aprobar
Mi juego (PANTALLA_ANCHO, PANTALLA_ALTO)
arcade.ejecutar()
Esto crea una ventana con un fondo blanco. Luego, agrega un jugador a tu juego:
claseJugador:
definitivamente__en eso__(yo, x, y):
self.x = x
self.y = y
auto.velocidad = 5
auto.radio = 20definitivamentedibujar(ser):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. AZUL)definitivamentemover hacia la izquierda(ser):
self.x -= self.velocidaddefinitivamentemover a la derecha(ser):
auto.x += auto.velocidaddefinitivamenteascender(ser):
auto.y += auto.velocidad
definitivamentemover hacia abajo(ser):
self.y -= self.velocidad
Esto crea un reproductor simple con un círculo azul. Puedes agregar este jugador a tu juego modificando el Mi juego clase:
importar arcada
ANCHO_PANTALLA = 640
PANTALLA_ALTURA = 480claseMi juego(arcada. Ventana):
definitivamente__en eso__(uno mismo, ancho, alto):
super().__init__(ancho, alto, "Mi juego")
arcade.set_background_color (arcade.color. BLANCO)
self.jugador = Jugador (PANTALLA_ANCHO // 2, ALTURA_PANTALLA // 2)definitivamenteen_dibujar(ser):
arcade.start_render()
self.player.draw()definitivamenteactualizar(uno mismo, delta_time):
aprobardefinitivamenteprincipal():
Mi juego (PANTALLA_ANCHO, PANTALLA_ALTO)
arcade.ejecutar()
si __nombre__ == "__principal__":
principal()
Ahora tienes un jugador en tu juego que puedes dibujar en la pantalla.
Responder a pulsaciones y liberaciones de teclas
Para responder a la entrada del usuario en su juego, debe manejar las pulsaciones y liberaciones de teclas. La biblioteca Arcade proporciona dos métodos para manejar estos eventos: on_key_press y on_key_release.
Para utilizar estos métodos, debe definirlos en su arcada. Ventana subclase. Cuando el jugador presiona o suelta una tecla, arcade ejecutará el método correspondiente, pasándole dos argumentos: clave y modificadores. llave es un número entero que representa el código de tecla de la tecla presionada o soltada. modificadores es un campo de bits que representa cualquier tecla modificadora que el jugador también presionó, como Shift o Control.
Este es un ejemplo de cómo responder a una pulsación de tecla en tu juego:
claseMi juego(arcada. Ventana):
definitivamenteon_key_press(auto, clave, modificadores):
si clave == arcade.clave. IZQUIERDA:
# Mover jugador a la izquierda
elif clave == arcade.clave. BIEN:
# Mover jugador a la derecha
elif clave == arcade.clave. ARRIBA:
# Mover al jugador hacia arriba
elif clave == arcade.clave. ABAJO:
# Mueve al jugador hacia abajo
Para responder a comunicados de clave, puede definir el on_key_release método de la misma manera:
claseMi juego(arcada. Ventana):
definitivamenteon_key_release(auto, clave, modificadores):
si clave == arcade.clave. IZQUIERDA:
# Deja de mover el jugador hacia la izquierda
elif clave == arcade.clave. BIEN:
# Deja de mover el jugador a la derecha
elif clave == arcade.clave. ARRIBA:
# Deja de mover al jugador hacia arriba
elif clave == arcade.clave. ABAJO:
# Deja de mover al jugador hacia abajo
Es importante tener en cuenta que capturar entrada de usuario en pygame requiere verificación manual de eventos dentro de su bucle de juego. Por otro lado, la biblioteca Arcade invoca automáticamente métodos relevantes cuando el jugador presiona o suelta una tecla. Esto significa que no tiene que verificar manualmente los eventos clave en su bucle de juego, lo que le ahorra la molestia de tener que usar código adicional.
Personalización del manejo de entrada del teclado para adaptarse a las necesidades de su juego
La biblioteca de Arcade proporciona muchas formas de personalizar la entrada del teclado. Es posible que desee cambiar las combinaciones de teclas de su juego o permitir que el jugador personalice sus propias combinaciones de teclas.
Puedes hacer esto definiendo un diccionario mapa_clave que asigna cada tecla al método correspondiente del objeto jugador. Para permitir que el jugador personalice sus combinaciones de teclas, puede agregar un menú de configuración que modifique el mapa_clave diccionario basado en las preferencias del jugador.
Aquí hay un ejemplo:
claseMi juego(arcada. Ventana):
definitivamente__en eso__(yo, ancho, alto, título):
super().__init__(ancho, alto, título)
self.jugador = Jugador(100, 100)self.mapa_clave = {
arcade.clave. IZQUIERDA: self.player.move_left,
arcade.clave. DERECHA: self.player.move_right,
arcade.clave. ARRIBA: self.player.move_up,
arcade.clave. ABAJO: self.player.move_down
}definitivamenteon_key_press(auto, clave, modificadores):
si llave en self.key_map:
self.key_map[clave]()
definitivamenteon_key_release(auto, clave, modificadores):
si llave en self.key_map:
self.key_map[clave + 1]()
Responda a las entradas del usuario en tiempo real
Responder a la entrada del usuario en tiempo real es un aspecto esencial para crear un juego atractivo. Al tomarse el tiempo para manejar adecuadamente la entrada del teclado en su juego, puede crear una experiencia más atractiva y experiencia inmersiva para sus jugadores y, en última instancia, haga que su juego se destaque en una multitud mercado.