diff --git a/jeu.py b/jeu.py index c56e832..bb1d0d7 100644 --- a/jeu.py +++ b/jeu.py @@ -15,7 +15,8 @@ class Personnage: self.inventaire = ["dague", "potion"] elif self.cat == "elfe": self.inventaire = ["arc", "potion"] - + +#jet d'attaque def jet_attaque(self): lancer = randint(1, 20) if self.cat == "guerrier": @@ -28,6 +29,7 @@ class Personnage: degats = self.exp * 8 return lancer + degats +#jet de défense def jet_defense(self): lancer = randint(1, 20) if self.cat == "guerrier": @@ -39,18 +41,21 @@ class Personnage: elif self.cat == "elfe": protection = self.exp * 10 return lancer + protection - + +#changement de points de vie et d'experience def change_pdv(self, nb_pdv): - self.pdv = self.pdv + nb_pdv - + self.pdv += nb_pdv + if self.pdv < 0: + self.pdv = 0 + def change_exp(self, nb_exp): if nb_exp < 0: raise ValueError("le parametre doit etre positif") self.exp = self.exp + nb_exp - +#affichages def affiche_caracteristiques(self): - print("vous vous appelez", self.nom, ", vous etes un", self.cat, ", vous avez", self.pdv, " points de vie et", self.exp, "points d'experience.") + print(self.nom, "vous etes un", self.cat, ", vous avez", self.pdv, " points de vie et", self.exp, "points d'experience.") def affiche_inventaire(self): print(self.inventaire) @@ -58,4 +63,63 @@ class Personnage: -mon_perso = Personnage("moi", "guerrier") \ No newline at end of file +# Instanciation des personnages +joueur1 = Personnage("Vyke", "guerrier") +joueur2 = Personnage("Ranni", "magicien") + + +# Fonction de combat +def combat(p1, p2): + attaquant = p1 + defenseur = p2 + tour = 1 + + while p1.pdv > 0 and p2.pdv > 0: + print("\n--- Tour {} ---".format(tour)) + print("{} attaque {}".format(attaquant.nom, defenseur.nom)) + + att = attaquant.jet_attaque() + deff = defenseur.jet_defense() + + print("Jet d'attaque de {} : {}".format(attaquant.nom, att)) + print("Jet de défense de {} : {}".format(defenseur.nom, deff)) + + if att > deff: + degats = randint(1, 8) + defenseur.change_pdv(-degats) + print("{} réussi son attaque et lance un dé à 8 faces, il obtient {}. {} perd {} PDV !".format(attaquant.nom, degats, defenseur.nom, degats)) + elif att < deff: + degats = randint(1, 4) + attaquant.change_pdv(-degats) + print("{} rate son attaque et subit une contre-attaque ! {} lance un dé à 4 faces et obtient {}. {} perd {} PDV.".format(attaquant.nom, defenseur.nom, degats, attaquant.nom, degats)) + else: + print("Les attaques s'annulent, personne ne perd de points de vie") + + + # Affichage des stats + attaquant.affiche_caracteristiques() + defenseur.affiche_caracteristiques() + + input("Presse la touche entrée pour continuer") + + # Échange des rôles + attaquant, defenseur = defenseur, attaquant + tour += 1 + + # Fin du combat + print("\n--- Fin du combat ---") + if p1.pdv > 0: + print("{} a gagné le combat ! Il va pouvoir fêter ça à la taverne !".format(p1.nom)) + p1.change_exp(1) + else: + print("{} a gagné le combat ! Il va pouvoir fêter ça à la taverne !".format(p2.nom)) + p2.change_exp(1) + + # Affichage final + print("\n--- Caractéristiques finales ---") + p1.affiche_caracteristiques() + p2.affiche_caracteristiques() + + +# Lancement du combat +combat(joueur1, joueur2) \ No newline at end of file