core.timers
timers.py
Controla la progresión de la hora en el juego y ajusta la velocidad de los animatrónicos según la hora.
1""" 2timers.py 3 4Controla la progresión de la hora en el juego y ajusta la velocidad 5de los animatrónicos según la hora. 6""" 7 8import time 9import random 10 11from colorama import Fore, init, Style 12init(autoreset=True) 13 14import core.config as estado 15from utils.utils import limpiar_pantalla, reproducir_sonido 16from core.animatronics import animatronics 17 18 19def avanzar_hora(): 20 """ 21 Avanza la hora del juego en intervalos definidos hasta la hora límite. 22 23 Ejecuta un bucle que incrementa la variable global `hora_actual` 24 cada cierto tiempo definido en la configuración (`config["tiempo_avanzar_hora"]`). 25 Cada vez que la hora avanza, se ajustan las velocidades de los animatrónicos 26 según corresponda. 27 28 Al llegar a la hora 8: 29 - Se limpia la pantalla. 30 - Se reproduce el sonido de victoria. 31 - Se muestra un mensaje de triunfo. 32 - Se activa `stop_event` para detener todos los hilos activos. 33 34 Variables globales: 35 hora_actual (int): Representa la hora actual del juego. 36 37 Notas: 38 - Debe ejecutarse en un hilo separado para no bloquear la ejecución principal. 39 - El bucle se interrumpe cuando se activa `stop_event`. 40 - `stop_event.wait(tiempo)` permite interrupciones inmediatas de la espera. 41 """ 42 while not estado.stop_event.wait(estado.config["tiempo_avanzar_hora"]): 43 if estado.hora_actual < 8: 44 estado.hora_actual += 1 45 ajustar_tiempos_por_hora(estado.hora_actual) 46 if estado.hora_actual == 8: 47 limpiar_pantalla() 48 reproducir_sonido(estado.config["sonido_victoria"]) 49 print(Fore.GREEN + Style.BRIGHT + "\n¡6 AM!\n") 50 estado.stop_event.set() 51 time.sleep(1) 52 break 53 54 55def ajustar_tiempos_por_hora(hora_actual): 56 """ 57 Ajusta la velocidad de movimiento de los animatrónicos según la hora. 58 59 A partir de la hora 6 (6 AM): 60 - Reduce el tiempo de desplazamiento de los animatrónicos en un 60 % 61 sin permitir que sea menor a 5 segundos. 62 - Marca a cada animatrónico como acelerado para evitar aplicar 63 la reducción varias veces. 64 65 Args: 66 hora_actual (int): Hora actual del juego. 67 """ 68 if hora_actual >= 6: 69 for nombre, anim in animatronics.items(): 70 if not anim.acelerado: 71 # Ajusta IA para simular aceleración 72 anim.ia_level = max(5, anim.ia_level - random.randint(1, 5)) 73 anim.acelerado = True
20def avanzar_hora(): 21 """ 22 Avanza la hora del juego en intervalos definidos hasta la hora límite. 23 24 Ejecuta un bucle que incrementa la variable global `hora_actual` 25 cada cierto tiempo definido en la configuración (`config["tiempo_avanzar_hora"]`). 26 Cada vez que la hora avanza, se ajustan las velocidades de los animatrónicos 27 según corresponda. 28 29 Al llegar a la hora 8: 30 - Se limpia la pantalla. 31 - Se reproduce el sonido de victoria. 32 - Se muestra un mensaje de triunfo. 33 - Se activa `stop_event` para detener todos los hilos activos. 34 35 Variables globales: 36 hora_actual (int): Representa la hora actual del juego. 37 38 Notas: 39 - Debe ejecutarse en un hilo separado para no bloquear la ejecución principal. 40 - El bucle se interrumpe cuando se activa `stop_event`. 41 - `stop_event.wait(tiempo)` permite interrupciones inmediatas de la espera. 42 """ 43 while not estado.stop_event.wait(estado.config["tiempo_avanzar_hora"]): 44 if estado.hora_actual < 8: 45 estado.hora_actual += 1 46 ajustar_tiempos_por_hora(estado.hora_actual) 47 if estado.hora_actual == 8: 48 limpiar_pantalla() 49 reproducir_sonido(estado.config["sonido_victoria"]) 50 print(Fore.GREEN + Style.BRIGHT + "\n¡6 AM!\n") 51 estado.stop_event.set() 52 time.sleep(1) 53 break
Avanza la hora del juego en intervalos definidos hasta la hora límite.
Ejecuta un bucle que incrementa la variable global hora_actual
cada cierto tiempo definido en la configuración (config["tiempo_avanzar_hora"]
).
Cada vez que la hora avanza, se ajustan las velocidades de los animatrónicos
según corresponda.
Al llegar a la hora 8:
- Se limpia la pantalla.
- Se reproduce el sonido de victoria.
- Se muestra un mensaje de triunfo.
- Se activa stop_event
para detener todos los hilos activos.
Variables globales: hora_actual (int): Representa la hora actual del juego.
Notas:
- Debe ejecutarse en un hilo separado para no bloquear la ejecución principal.
- El bucle se interrumpe cuando se activa stop_event
.
- stop_event.wait(tiempo)
permite interrupciones inmediatas de la espera.
56def ajustar_tiempos_por_hora(hora_actual): 57 """ 58 Ajusta la velocidad de movimiento de los animatrónicos según la hora. 59 60 A partir de la hora 6 (6 AM): 61 - Reduce el tiempo de desplazamiento de los animatrónicos en un 60 % 62 sin permitir que sea menor a 5 segundos. 63 - Marca a cada animatrónico como acelerado para evitar aplicar 64 la reducción varias veces. 65 66 Args: 67 hora_actual (int): Hora actual del juego. 68 """ 69 if hora_actual >= 6: 70 for nombre, anim in animatronics.items(): 71 if not anim.acelerado: 72 # Ajusta IA para simular aceleración 73 anim.ia_level = max(5, anim.ia_level - random.randint(1, 5)) 74 anim.acelerado = True
Ajusta la velocidad de movimiento de los animatrónicos según la hora.
A partir de la hora 6 (6 AM): - Reduce el tiempo de desplazamiento de los animatrónicos en un 60 % sin permitir que sea menor a 5 segundos. - Marca a cada animatrónico como acelerado para evitar aplicar la reducción varias veces.
Args: hora_actual (int): Hora actual del juego.