from random import randint class Personnage : def __init__(self, nom, cat) : """initialisation des attributs de la classe Personnage""" self.nom = nom self.cat = cat.lower() self.pv = 20 self.exp = 1 if self.cat == "guerrier" : self.inv = ["épée", "potion"] elif self.cat == "magicien" : self.inv = ["bâton", "potion"] elif self.cat == "voleur" : self.inv = ["dague","potion"] elif self.cat == "elfe" : self.inv = ["arc","potion"] def jet_attaque(self) : """fonction permettant de faire un jet de dé d'attaque""" resultat_de = randint(1, 20) if self.cat == "guerrier" or self.cat == "magicien" : return resultat_de+self.exp*10 elif self.cat == "voleur" : return resultat_de+self.exp*3 elif self.cat == "elfe" : return resultat_de+self.exp*8 def jet_defense(self) : """fonction permettant de faire un jet de dé de défense""" resultat_de = randint(1,20) if self.cat == "guerrier" : return resultat_de+self.exp*8 elif self.cat == "magicien" : return resultat_de+self.exp*7 elif self.cat == "voleur" : return resultat_de+self.exp*9 elif self.cat == "elfe" : return resultat_de+self.exp*10 def change_pv(self, nb_pv) : """fonction permettant de changer les points de vie d'un personnage""" self.pv += nb_pv if self.pv < 0 : self.pv = 0 def change_exp(self, nb_exp) : """fonction permettant de changer l'expèrience d'un personnage""" self.exp += nb_exp def affiche_caracteristiques(self) : """fonction permettant d'afficher les caractéristiques d'un personnage""" print(f"{self.nom} le {self.cat} a actuellement {self.pv} PV et {self.exp} EXP") def affiche_inventaire(self) : """fonction permettant d'afficher l'inventaire d'un personnage""" print(f"Bonjour {self.nom}, voici ton inventaire :") for i in range(len(self.inv)) : print(f"- {self.inv[i]}") def combat() : """fonction principale permettant de faire un combat entre 2 personnages""" perso1 = Personnage(input("Comment s'appelle le premier joueur ? "), input("Quelle est sa catégorie ? (guerrier, magicien, voleur, elfe) ")) perso2 = Personnage(input("Comment s'appelle le second joueur ? "), input("Quelle est sa catégorie ? (guerrier, magicien, voleur, elfe) ")) print() while perso1.pv > 0 and perso2.pv > 0 : degats = perso1.jet_attaque() defense = perso2.jet_defense() if degats == defense : print("il y a égalité sur les lancés, personne ne prend de dégâts") print() elif degats > defense : perte_pv = randint(-8,-1) perso2.change_pv(perte_pv) print(f"{perso1.nom} inflige {abs(perte_pv)} dégâts d'attaque à {perso2.nom}") print() elif degats < defense : perte_pv = randint(-4,-1) perso1.change_pv(perte_pv) print(f"{perso2.nom} se défend parfaitement et inflige même {abs(perte_pv)} dégâts de contre à {perso1.nom}") print() degats = perso2.jet_attaque() defense = perso1.jet_defense() if degats == defense : print("il y a égalité sur les lancés, personne ne prend de dégâts") elif degats > defense : perte_pv = randint(-8,-1) perso1.change_pv(perte_pv) print(f"{perso2.nom} inflige {abs(perte_pv)} dégâts d'attaque à {perso1.nom}") print() elif degats < defense : perte_pv = randint(-4,-1) perso2.change_pv(perte_pv) print(f"{perso1.nom} se défend parfaitement et inflige même {abs(perte_pv)} dégâts de contre à {perso2.nom}") print() perso1.affiche_caracteristiques() print() perso2.affiche_caracteristiques() print() if perso1.pv == 0 : print("le combat est terminé") print(f"{perso2.nom} a triomphé de {perso1.nom} et gagne 1 EXP") perso2.change_exp(1) elif perso2.pv == 0 : print("le combat est terminé") print(f"{perso1.nom} a triomphé de {perso2.nom} et gagne 1 EXP") perso1.change_exp(1) else : print("appuyer sur entrée pour continuer") input() combat()