diff --git a/Combattre.Exe b/Combattre.Exe new file mode 100644 index 0000000..930ef59 --- /dev/null +++ b/Combattre.Exe @@ -0,0 +1,67 @@ +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 \ No newline at end of file