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
67 lines
3.0 KiB
1 year ago
|
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
|