You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

67 lines
3.0 KiB

def combattre(self:'Personnage', adversaire:'Monstre') -> tuple:
"""
Effectue un combat entre le personnage et un monstre.
Parameters:
- self ('Personnage'): L'instance du personnage effectuant l'attaque.
- adversaire ('Monstre'): L'instance du monstre contre lequel le personnage se bat.
Returns:
- tuple: Un tuple contenant le code de résultat et la description du combat.
Code de Résultat :
- 'x': Le combat n'est pas encore terminé.
- 'MP': Les deux participants sont hors combat.
- 'P': Le personnage est hors combat.
- 'M': Le monstre est hors combat.
Description :
Le combat consiste en plusieurs étapes, où les scores de combat sont comparés, et des dégâts sont infligés en fonction du résultat.
Les participants peuvent également subir des dégâts critiques ou être hors combat.
"""
score_personnage = rd.randint(1, 6) + rd.randint(1, 6) + self.habilite
score_monstre = rd.randint(1, 6) + rd.randint(1, 6) + adversaire.habilite
result_code = 'x'
while result_code == 'x':
if score_personnage == score_monstre:
self.subir_degats(1)
adversaire.subir_degats(1)
result_code = "x"
result_desc = f"{self.nom} et {adversaire.nom} se blessent mutuellement."
time.sleep(1)
print(result_desc)
elif score_personnage > score_monstre:
adversaire.subir_degats(self.force)
result_code = "x"
result_desc = f"{self.nom} inflige {self.force} points de dégâts au {adversaire.nom}."
time.sleep(1)
print(result_desc)
else:
self.subir_degats(adversaire.force)
result_code = "x"
result_desc = f"{adversaire.nom} inflige {adversaire.force} points de dégâts au {self.nom}."
time.sleep(0.5)
print(result_desc)
if rd.randint(1, 6) == rd.randint(1, 6):
double_damage = self.force * 2
adversaire.subir_degats(double_damage)
result_desc += f" Coup critique ! {self.nom} inflige {double_damage} points de dégâts supplémentaires au {adversaire.nom}."
time.sleep(0.5)
print(result_desc)
elif self.est_hs() and adversaire.est_hs():
result_code = "MP"
result_desc = f"{self.nom} et {adversaire.nom} sont tous les deux hors combat."
time.sleep(0.5)
print(result_desc)
elif self.est_hs():
result_code = "P"
result_desc = f"{self.nom} est hors combat."
elif adversaire.est_hs():
result_code = "M"
result_desc = f"{adversaire.nom} est hors combat."
time.sleep(0.5)
print(result_desc)
return result_code, result_desc