path-of-the-loner/views/PVE/chooseMonstersUI.py
2025-03-03 16:47:07 +01:00

61 lines
1.9 KiB
Python

# chooseMonstersUI
from models.heroes.monster import Monster
from sty import fg
from random import randint
# pour éviter les pb d'import circulaire
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from controllers.PveController import PveController
class ChooseMonstersUI:
def __init__(
self, pveController: "PveController", difficulty: int, is_AI: bool
) -> None:
MAX_NUMBER_MONSTER = 3
self.pveController = pveController
self.is_AI = is_AI
self.difficulty = difficulty
self.monster: Monster = None
self.monsters: list[Monster] = []
for i in range(0, MAX_NUMBER_MONSTER):
self.set_monster()
self.monsters.append(self.monster)
def set_monster(self):
monsters = self.pveController.db.monster_db.get_all_monsters()
len_monsters = len(monsters)
choice = -1 # Initialiser à une valeur qui n'est pas un index valide
while choice < 1 or choice > len_monsters:
for i in range(0, len_monsters):
monster = monsters[i]
if not self.is_AI:
print(f"{i+1}. {monster.get_type_str()} - {monster.name}")
try:
if self.is_AI:
choice = randint(1, len_monsters)
# else:
# choice = int(input("Give your choice: "))
except ValueError:
print(f"{fg.red}Input a valid number{fg.rs}")
continue
if choice < 1 or choice > len_monsters:
print(f"{fg.red}Invalid choice. Try again{fg.rs}")
# L'indice dans la liste est `choice - 1`
# car choice commence à partir de 1
self.monster = monsters[choice - 1]
self.monster.name = fg.da_blue + self.monster.name + fg.rs
if self.monster.HP > self.difficulty:
choice = -1