61 lines
1.9 KiB
Python
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
|