Aprende a medir el tiempo y úsalo para controlar varios aspectos de tu juego.

En el desarrollo de juegos, agregar eventos basados ​​en el tiempo puede mejorar en gran medida la mecánica del juego y hacer que los juegos sean más atractivos para los jugadores. Al incorporar temporizadores, puede introducir desafíos, crear objetivos de tiempo limitado o agregar un sentido de urgencia a ciertos elementos del juego.

Crea un juego simple

Comience creando un juego simple para comprender los conceptos básicos. Cree un juego en el que el jugador pueda moverse hacia la izquierda y hacia la derecha, y habrá una sola plataforma. Crear un nuevo archivo llamado juego-simple.py e importar el módulo arcade, que proporciona las funcionalidades necesarias para crear el juego.

El código utilizado en este artículo está disponible en este repositorio GitHub y es gratis para su uso bajo la licencia MIT.

A continuación, defina la ventana de juego clase, que es una subclase de arcada. Ventana. Dentro de la clase GameWindow, defina el

instagram viewer
__en eso__ que inicializa la ventana con el ancho, el alto y el título especificados.

El on_key_press El método detecta las pulsaciones de teclas de flecha izquierda o derecha. Presionando a la izquierda disminuye jugador_x en 10 unidades mientras que presionando la derecha lo aumenta en 10 unidades. Este permite que el jugador se mueva horizontalmente dentro de la ventana del juego.

Para ejecutar el juego, defina la función principal, cree una instancia de GameWindow, llame al método de configuración para configurar la ventana del juego y, finalmente, inicie el ciclo del juego usando arcade.ejecutar().

Diseño de la estructura de clases del temporizador

Para implementar temporizadores en su juego, puede crear una clase de temporizador con los atributos y métodos necesarios. Esta clase proporcionará funcionalidades para iniciar el temporizador, detenerlo, recuperar el tiempo transcurrido y verificar si el temporizador ha expirado. Esta es la estructura básica de la clase Timer:

importar tiempo

claseTemporizador:
definitivamente__en eso__(uno mismo, duración):
self.duration = duración
self.start_time = 0
self.is_running = FALSO

definitivamentecomenzar(ser):
self.start_time = tiempo.tiempo()
self.is_running = Verdadero

definitivamentedetener(ser):
self.is_running = FALSO

definitivamenteobtener_tiempo_transcurrido(ser):
si self.is_running:
devolver hora.hora() - self.hora_de_inicio
devolver0

definitivamenteEstá expirado(ser):
devolver self.get_elapsed_time() >= self.duración

La clase Timer toma un duración parámetro en segundos durante la inicialización. La clase contiene atributos tales como hora de inicio para almacenar la hora en que se inició el temporizador, y Esta corriendo para rastrear el estado del temporizador.

El comenzar() El método establece start_time a la hora actual usando tiempo tiempo() y establece is_running a Verdadero. El detener() simplemente establece is_running en FALSO. El get_elapsed_time() El método calcula el tiempo transcurrido restando start_time de la hora actual.

Si el temporizador está funcionando, devuelve el tiempo transcurrido; de lo contrario, devuelve 0. El Está expirado() El método comprueba si el tiempo transcurrido es mayor o igual que la duración, lo que indica que el temporizador ha expirado.

Implementación de temporizadores de cuenta regresiva

Para demostrar una cuenta regresiva en su juego, puede iniciar el temporizador cuando el jugador presiona una tecla específica, como la barra espaciadora. Imprima la cuenta regresiva en la consola usando el comando de impresión de Python. Crear un nuevo archivo llamado temporizador.py y agregue el código con estas actualizaciones:

importar tiempo

claseventana de juego(arcada. Ventana):
definitivamente__en eso__(ser):
super().__init__(ANCHO, ALTO, "Juego sencillo")
self.jugador_x = ANCHO // 2
self.jugador_y = ALTURA // 2
self.temporizador = Temporizador(10)

definitivamenteon_key_press(auto, clave, modificadores):
si clave == arcade.clave. ESPACIO:
auto.temporizador.start()

definitivamenteen_dibujar(ser):
# código existente
si self.timer.is_running:
tiempo_transcurrido = self.timer.get_elapsed_time()
r_time = auto.temporizador.duración - tiempo_transcurrido
tiempo_restante = max (r_time, 0)
imprimir(f"Cuenta regresiva: {tiempo restante:.1F} segundos")

Asegúrate de poder ver la ventana de la terminal y la ventana del juego al mismo tiempo. Luego presione la barra espaciadora y verá la cuenta regresiva del temporizador:

Manejo de eventos de temporizador y acciones de activación

También puede activar una función que dibuja un rectángulo cuando el temporizador de cuenta regresiva expira. Crear un nuevo archivo llamado manejar-evento.py y agregue el código con las siguientes actualizaciones:

definitivamenteen_dibujar(ser):
# código existente
si self.timer.is_expired():
self.draw_rectangle()

definitivamentedibujar_rectángulo(ser):
arcade.draw_rectangle_filled (ANCHO // 2, ALTURA // 2, 100, 100, rojo)

A continuación se muestra la salida:

Pausa, reinicio y reanudación del temporizador

Para agregar funcionalidad para pausar, restablecer y reanudar el temporizador, puede extender el Temporizador clase con métodos apropiados. Aquí hay un ejemplo:

claseTemporizador:
# código existente

definitivamentepausa(ser):
self.duración -= self.get_elapsed_time()
self.is_running = FALSO

definitivamentereiniciar(ser):
self.start_time = 0
self.is_running = FALSO

definitivamentereanudar(ser):
self.start_time = tiempo.tiempo()
self.is_running = Verdadero

Adición de comentarios visuales al temporizador

Para proporcionar información visual para el temporizador, puede incorporar texto o elementos gráficos en la pantalla del juego. Crear un nuevo archivo llamado visual.py y agregue el código con las siguientes actualizaciones:

definitivamenteen_dibujar(ser):
# código existente
si self.timer.is_running:
texto = f"Cuenta regresiva: {tiempo restante:.1F} segundos"
arcade.draw_text (texto, 10, 10, negro, 18)

Ahora verás el temporizador directamente en la ventana del juego en lugar de en la consola:

Incluyendo funciones adicionales

Para mejorar aún más los eventos basados ​​en el tiempo, puede considerar implementar las siguientes características adicionales en sus juegos.

Bonificaciones o potenciadores basados ​​en el tiempo

Introduce potenciadores o bonificaciones que aparecen periódicamente a lo largo del juego. Estos potenciadores podrían proporcionar habilidades temporales, puntos extra, mayor velocidad o armas mejoradas.

Al hacerlos por tiempo limitado, los jugadores deben recolectarlos estratégicamente dentro de un marco de tiempo específico para obtener una ventaja. Esto añade emoción y recompensa el pensamiento rápido.

Desafíos de tiempo limitado

Crea desafíos de tiempo limitado en los que los jugadores deben completar una tarea dentro de un período de tiempo determinado. Por ejemplo, una sección de rompecabezas o plataformas que requiere resolverse en un tiempo determinado.

Esto desafía a los jugadores a pensar y actuar rápidamente, agregando un emocionante sentido de urgencia al juego. Completar con éxito estos desafíos puede desbloquear recompensas o hacer avanzar la historia.

Obstáculos cronometrados o enemigos

Implementa obstáculos cronometrados o enemigos que supongan una amenaza para el jugador. Por ejemplo, plataformas móviles que aparecen y desaparecen a intervalos regulares, o enemigos que se vuelven invencibles por un tiempo limitado.

Los jugadores deben cronometrar sus acciones y movimientos correctamente para sortear estos obstáculos o derrotar a los enemigos antes de que se acabe el tiempo. Esto agrega una capa de estrategia y coordinación al juego.

Mejores prácticas para eventos basados ​​en tiempo

Al implementar eventos basados ​​en el tiempo en sus juegos, es fundamental seguir estas prácticas recomendadas.

Prueba y equilibrio

Pruebe minuciosamente sus eventos basados ​​en el tiempo para asegurarse de que sean justos y equilibrados. Ajuste la duración, la dificultad y las recompensas para crear experiencias de juego agradables.

Comentarios del usuario

Proporcione comentarios claros e intuitivos a los jugadores sobre el estado del temporizador y cualquier evento basado en el tiempo. Adición de efectos de sonido, indicadores visuales o señales textuales pueden ayudar a los jugadores a comprender las limitaciones de tiempo y las consecuencias de sus acciones.

Medición de tiempo consistente

Use un sistema de medición de tiempo consistente a lo largo de su juego. Por ejemplo, utilice segundos como unidad para todos los temporizadores y cálculos relacionados con el tiempo. Esto garantiza la coherencia y la facilidad de comprensión tanto para los jugadores como para los desarrolladores.

Manejar casos de borde

Considere escenarios en los que el juego puede pausarse, minimizarse o ejecutarse en segundo plano. Maneje estas situaciones con gracia para mantener el tiempo preciso y evitar comportamientos no deseados cuando se reanude el juego.

Al seguir estas prácticas recomendadas, puede crear eventos basados ​​en el tiempo que mejoren el juego, desafíen a los jugadores y brinden una experiencia equilibrada y agradable.

Hacer que los juegos sean más divertidos con eventos basados ​​en el tiempo

Al incorporar eventos basados ​​en el tiempo en sus juegos, puede crear una experiencia dinámica y atractiva para los jugadores. Los desafíos de tiempo limitado agregan emoción y urgencia, mientras que los power-ups u obstáculos cronometrados pueden crear oportunidades estratégicas para la toma de decisiones.

Experimente con diferentes mecánicas basadas en el tiempo para encontrar el equilibrio adecuado para su juego y recuerde probar e iterar para maximizar la diversión y el disfrute.