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
__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 = FALSOdefinitivamentecomenzar(ser):
self.start_time = tiempo.tiempo()
self.is_running = Verdaderodefinitivamentedetener(ser):
self.is_running = FALSOdefinitivamenteobtener_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 existentedefinitivamentepausa(ser):
self.duración -= self.get_elapsed_time()
self.is_running = FALSOdefinitivamentereiniciar(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.