diff --git a/jdr.py b/jdr.py index 700c644..c1e1eea 100644 --- a/jdr.py +++ b/jdr.py @@ -1,2 +1,81 @@ +import random + class Personnage: - def __init__ (self, nom, pdv, exp, cat, inventaire) \ No newline at end of file + def __init__(self, nom, cat): + self.nom = nom + self.pdv = 20 + self.exp = 1 + self.cat = cat + self.inventaire = [] + + def jet_attaque(self): + coefficient = 10 # Coeff de base + if self.cat == "guerrier": + coefficient = 10 + elif self.cat == "magicien": + coefficient = 10 + elif self.cat == "voleur": + coefficient = 3 + elif self.cat == "elfe": + coefficient = 8 + + return random.randint(1, 20) + self.exp * coefficient + + def jet_defense(self): + coefficient = 8 # Coeff de base + if self.cat == "guerrier": + coefficient = 8 + elif self.cat == "magicien": + coefficient = 7 + elif self.cat == "voleur": + coefficient = 9 + elif self.cat == "elfe": + coefficient = 10 + + return random.randint(1, 20) + self.exp * coefficient + + def change_pdv(self, ab_pdv): + self.pdv += ab_pdv + + def change_exp(self, ab_exp): + self.exp += ab_exp + + def affiche_caracteristiques(self): + print(f"Nom: {self.nom}") + print(f"Catégorie: {self.cat}") + print(f"Points de vie: {self.pdv}") + print(f"Expérience: {self.exp}") + + def affiche_inventaire(self): + print(f"Inventaire de {self.nom}: {', '.join(self.inventaire)}") + +# Creation des personnage +personnage1 = Personnage("kratos", "guerrier") +personnage2 = Personnage("dumbeldore", "magicien") + +# Simu de combat +while personnage1.pdv > 0 and personnage2.pdv > 0: + attaquant = personnage1 if random.choice([True, False]) else personnage2 + defenseur = personnage2 if attaquant == personnage1 else personnage1 + + attaque = attaquant.jet_attaque() + defense = defenseur.jet_defense() + + if attaque > defense: + dommages = random.randint(1, 8) + defenseur.change_pdv(-dommages) + print(f"{attaquant.nom} attaque {defenseur.nom} et inflige {dommages} points de dégâts.") + else: + dommages = random.randint(1, 4) + attaquant.change_pdv(-dommages) + print(f"{attaquant.nom} attaque {defenseur.nom}, mais {defenseur.nom} se défend et prend seulement {dommages} points de dégâts.") + + # Affiche caracteristique + personnage1.affiche_caracteristiques() + personnage2.affiche_caracteristiques() + +# Ajoute de l'exp au survivant a la fin du combat +gagnant = personnage1 if personnage1.pdv > 0 else personnage2 +gagnant.change_exp(1) + +print(f"{gagnant.nom} a gagné le combat et reçoit 1 point d'expérience.")