core.energy
energy.py
Funciones para supervisar y representar el nivel de energía del jugador durante el juego. Incluye verificación de energía y barra gráfica.
1""" 2energy.py 3 4Funciones para supervisar y representar el nivel de energía del jugador 5durante el juego. Incluye verificación de energía y barra gráfica. 6""" 7 8from colorama import Fore, init 9import core.config as estado 10 11# Inicialización de Colorama 12init(autoreset=True) 13 14 15def verificar_energia(): 16 """ 17 Supervisa el nivel de energía del jugador durante el juego. 18 19 Ejecuta un bucle que verifica, cada segundo, si la energía actual 20 se ha agotado. Si llega a cero y aún no se había detectado, marca 21 la energía como agotada y detiene el juego indicando a "Freddy" 22 como responsable. 23 24 Se espera que esta función se ejecute en un hilo separado. 25 26 Notas: 27 - El bucle se detiene automáticamente cuando se activa `stop_event`. 28 - El uso de `stop_event.wait(1)` permite interrupciones inmediatas 29 del hilo, evitando esperas innecesarias. 30 31 Variables globales: 32 energia_actual (int): Nivel actual de energía del jugador. 33 energia_agotada (bool): Indica si ya se detectó energía agotada. 34 motivo_game_over (str): Motivo por el que terminó el juego. 35 """ 36 while not estado.stop_event.wait(1): 37 if estado.energia_actual <= 0 and not estado.energia_agotada: 38 estado.energia_agotada = True 39 estado.motivo_game_over = "Freddy" 40 estado.stop_event.set() 41 42 43def barra_energia(): 44 """ 45 Genera y devuelve una representación gráfica de la barra de energía. 46 47 Returns: 48 str: Texto formateado con la barra de energía y porcentaje actual. 49 """ 50 energia = estado.energia_actual 51 52 if energia >= 90: 53 bloques = 8 54 elif energia >= 75: 55 bloques = 7 56 elif energia >= 62: 57 bloques = 6 58 elif energia >= 50: 59 bloques = 5 60 elif energia >= 35: 61 bloques = 4 62 elif energia >= 20: 63 bloques = 3 64 elif energia >= 12: 65 bloques = 2 66 elif energia >= 5: 67 bloques = 1 68 else: 69 bloques = 0 70 71 barra = "█" * bloques + " " * (8 - bloques) 72 73 if energia <= 0: 74 return Fore.RED + f"[{barra}] " + Fore.RED + "SIN ENERGÍA" 75 elif energia <= 4: 76 return Fore.RED + f"[{barra}] " + Fore.RED + f"{energia}%" 77 elif energia <= 12: 78 return Fore.YELLOW + f"[{barra}] " + Fore.YELLOW + f"{energia}%" 79 elif energia <= 35: 80 return Fore.LIGHTYELLOW_EX + f"[{barra}] " + Fore.LIGHTYELLOW_EX + f"{energia}%" 81 else: 82 return Fore.GREEN + f"[{barra}] " + Fore.GREEN + f"{energia:.0f}%"
16def verificar_energia(): 17 """ 18 Supervisa el nivel de energía del jugador durante el juego. 19 20 Ejecuta un bucle que verifica, cada segundo, si la energía actual 21 se ha agotado. Si llega a cero y aún no se había detectado, marca 22 la energía como agotada y detiene el juego indicando a "Freddy" 23 como responsable. 24 25 Se espera que esta función se ejecute en un hilo separado. 26 27 Notas: 28 - El bucle se detiene automáticamente cuando se activa `stop_event`. 29 - El uso de `stop_event.wait(1)` permite interrupciones inmediatas 30 del hilo, evitando esperas innecesarias. 31 32 Variables globales: 33 energia_actual (int): Nivel actual de energía del jugador. 34 energia_agotada (bool): Indica si ya se detectó energía agotada. 35 motivo_game_over (str): Motivo por el que terminó el juego. 36 """ 37 while not estado.stop_event.wait(1): 38 if estado.energia_actual <= 0 and not estado.energia_agotada: 39 estado.energia_agotada = True 40 estado.motivo_game_over = "Freddy" 41 estado.stop_event.set()
Supervisa el nivel de energía del jugador durante el juego.
Ejecuta un bucle que verifica, cada segundo, si la energía actual se ha agotado. Si llega a cero y aún no se había detectado, marca la energía como agotada y detiene el juego indicando a "Freddy" como responsable.
Se espera que esta función se ejecute en un hilo separado.
Notas:
- El bucle se detiene automáticamente cuando se activa stop_event
.
- El uso de stop_event.wait(1)
permite interrupciones inmediatas
del hilo, evitando esperas innecesarias.
Variables globales: energia_actual (int): Nivel actual de energía del jugador. energia_agotada (bool): Indica si ya se detectó energía agotada. motivo_game_over (str): Motivo por el que terminó el juego.
44def barra_energia(): 45 """ 46 Genera y devuelve una representación gráfica de la barra de energía. 47 48 Returns: 49 str: Texto formateado con la barra de energía y porcentaje actual. 50 """ 51 energia = estado.energia_actual 52 53 if energia >= 90: 54 bloques = 8 55 elif energia >= 75: 56 bloques = 7 57 elif energia >= 62: 58 bloques = 6 59 elif energia >= 50: 60 bloques = 5 61 elif energia >= 35: 62 bloques = 4 63 elif energia >= 20: 64 bloques = 3 65 elif energia >= 12: 66 bloques = 2 67 elif energia >= 5: 68 bloques = 1 69 else: 70 bloques = 0 71 72 barra = "█" * bloques + " " * (8 - bloques) 73 74 if energia <= 0: 75 return Fore.RED + f"[{barra}] " + Fore.RED + "SIN ENERGÍA" 76 elif energia <= 4: 77 return Fore.RED + f"[{barra}] " + Fore.RED + f"{energia}%" 78 elif energia <= 12: 79 return Fore.YELLOW + f"[{barra}] " + Fore.YELLOW + f"{energia}%" 80 elif energia <= 35: 81 return Fore.LIGHTYELLOW_EX + f"[{barra}] " + Fore.LIGHTYELLOW_EX + f"{energia}%" 82 else: 83 return Fore.GREEN + f"[{barra}] " + Fore.GREEN + f"{energia:.0f}%"
Genera y devuelve una representación gráfica de la barra de energía.
Returns: str: Texto formateado con la barra de energía y porcentaje actual.