diff --git a/manoir_hantée/manoir_hantée.py b/manoir_hantée/manoir_hantée.py new file mode 100644 index 0000000..3ce5b8d --- /dev/null +++ b/manoir_hantée/manoir_hantée.py @@ -0,0 +1,128 @@ +import random as rd + +class Monstre: + def __init__(self, nom, dsc, img=None, obj=None) -> None: + self.nom = nom + self.dsc = dsc + self.img = img + self.obj = obj + self.habilite = rd.randint(1,10) + self.endurance = rd.randint(1,10) + self.force = 2 + self.courage = rd.randint(1,10) + if 'Squelette' in nom: + self.habilite = 4 + self.endurance = 4 + self.courage = 4 + + def get_description(self:'Monstre') -> str: + return self.dsc + + def get_carac(self:'Monstre') -> str: + return f"{self.nom} H{self.habilite} E{self.endurance} F{self.force} C{self.courage}" + + def est_hs(self:'Monstre')->bool: + return self.endurance <= 0 + + def subir_degats(self:'Monstre', degats:int) -> None: + if degats > 0: + self.endurance = self.endurance - degats + +class Personnage: + def __init__(self, nom) -> None: + self.nom=nom + self.habilite = 5+rd.randint(1,4) + self.endurance = 8+rd.randint(1,8) + self.charisme = rd.randint(1,10) + self.vigilance = rd.randint(1,10) + self.force = 2 + self.courage = rd.randint(1,10) +# self.discretion = +# self.lieu = None +# self.lieux_precedents = + self.objet = None + + def est_hs(self:'Personnage') -> bool: + self.endurance <=0 + + def get_carac(self:'Personnage') -> str: + return f"{self.nom} H{self.habilite} E{self.endurance} F{self.force} C{self.courage} V{self.vigilance} \n{self.objet}" + + def subir_degats(self:'Personnage', degats:int) -> None: + if degats > 0: + self.endurance = self.endurance - degats + + def soigner(self:'Personnage', soins:int) -> None: + if soins > 0: + self.endurance = self.endurance + soins + + + + def combattre(self:'Personnage', adversaire: 'Monstre') -> tuple: + # Lancer les dés pour le personnage + personnage_de1 = rd.randint(1, 6) + personnage_de2 = rd.randint(1, 6) + score_personnage = personnage_de1 + personnage_de2 + self.habilite + print(f"{self.nom} lance {personnage_de1} et {personnage_de2}, score total = {score_personnage}") + + # Lancer les dés pour le monstre + monstre_de1 = rd.randint(1, 6) + monstre_de2 = rd.randint(1, 6) + score_monstre = monstre_de1 + monstre_de2 + adversaire.habilite + print(f"{adversaire.nom} lance {monstre_de1} et {monstre_de2}, score total = {score_monstre}") + + # Vérifier si l'un des deux a fait un double + crit_personnage = (personnage_de1 == personnage_de2) + crit_monstre = (monstre_de1 == monstre_de2) + + # Calculer les dégâts + degats_personnage = self.force + degats_monstre = adversaire.force + + if crit_personnage: + degats_personnage *= 2 + print(f"{self.nom} inflige un coup critique ! Les dégâts sont doublés !") + if crit_monstre: + degats_monstre *= 2 + print(f"{adversaire.nom} inflige un coup critique ! Les dégâts sont doublés !") + + # Comparer les scores + if score_personnage == score_monstre: + # Les deux scores sont identiques + self.subir_degats(1) + adversaire.subir_degats(1) + message = f"Égalité ! {self.nom} et {adversaire.nom} subissent chacun 1 point de dégâts." + print(message) + if self.est_hs() and adversaire.est_hs(): + return ("MP", message) + elif self.est_hs(): + return ("P", f"{self.nom} est HS ! {adversaire.nom} reste en vie.") + elif adversaire.est_hs(): + return ("M", f"{adversaire.nom} est HS ! {self.nom} reste en vie.") + else: + return ("x", message) + elif score_personnage > score_monstre: + # Le personnage a gagné le combat + adversaire.subir_degats(degats_personnage) + message = f"{self.nom} inflige {degats_personnage} dégâts à {adversaire.nom}." + print(message) + if adversaire.est_hs(): + return ("M", f"{adversaire.nom} est HS ! {self.nom} reste en vie.") + else: + return ("x", message) + else: + # Le monstre a gagné le combat + self.subir_degats(degats_monstre) + message = f"{adversaire.nom} inflige {degats_monstre} dégâts à {self.nom}." + print(message) + if self.est_hs(): + return ("P", f"{self.nom} est HS ! {adversaire.nom} reste en vie.") + else: + return ("x", message) + + + +if __name__ == '__main__': + a = Monstre("Squelette", "Un squelette semblant bouger seul et muni d'une épée.", "squelette.png") + b = Monstre("Yone", "Yone atroce de malone qui pue sa mère", "Yone.png") + c = Monstre("Viego", "Viego trop fort d'alexis lvl master", "Viego.png") \ No newline at end of file