From ed6e91869bca8394e166b58fd19ffb75e181f0c4 Mon Sep 17 00:00:00 2001 From: SachaT <> Date: Sat, 21 Sep 2024 14:55:48 +0200 Subject: [PATCH] finit mais pas l'exp --- miniP1.py | 195 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 120 insertions(+), 75 deletions(-) diff --git a/miniP1.py b/miniP1.py index afe9bdc..02298ee 100644 --- a/miniP1.py +++ b/miniP1.py @@ -1,90 +1,135 @@ from random import randint -class Presonnage: - def __init__ (self,nom,cat): +class Personnage: + def __init__(self, nom, cat): self.nom = nom self.pdv = 20 - self.exp = 1 + self.exp = 1 self.cat = cat + self.potions = 1 # Nombre de potions par défaut car sa je trouve pas sinon ou les mettre if self.cat == "guerrier": - self.inventaire = ["épée","potion"] - if self.cat == "magicien": - self.inventaire = ["bâton","potion"] - if self.cat == "voleur": - self.inventaire = ["dague","potion"] - if self.cat == "elfe": - self.inventaire = ["arc","potion"] - - def jet_attaque (self): + self.inventaire = ["épée", "potion"] + elif self.cat == "magicien": + self.inventaire = ["bâton", "potion"] + elif self.cat == "voleur": + self.inventaire = ["dague", "potion"] + elif self.cat == "elfe": + self.inventaire = ["arc", "potion"] + + def jet_attaque(self): if self.cat == "guerrier": - return randint (1,20) + self.exp* 10 - if self.cat == "magicien": - return randint (1,20) + self.exp* 10 - if self.cat == "voleur": - return randint (1,20) + self.exp* 3 - if self.cat == "elfe": - return randint (1,20) + self.exp* 8 - - def jet_defense (self): + return randint(1, 20) + self.exp * 10 + elif self.cat == "magicien": + return randint(1, 20) + self.exp * 10 + elif self.cat == "voleur": + return randint(1, 20) + self.exp * 3 + elif self.cat == "elfe": + return randint(1, 20) + self.exp * 8 + + def jet_defense(self): if self.cat == "guerrier": - return randint(1,20) + self.exp* 8 - if self.cat == "magicien": - return randint(1,20) + self.exp* 7 - if self.cat == "voleur": - return randint(1,20) + self.exp* 9 - if self.cat == "elfe": - return randint(1,20) + self.exp* 10 - - def change_pdv (self,nb_pdv): - self.pdv = nb_pdv + self.pdv - - def change_exp (self,nb_exp): - self.exp = nb_exp + self.exp - - def affiche_caracteristiques (self): + return randint(1, 20) + self.exp * 8 + elif self.cat == "magicien": + return randint(1, 20) + self.exp * 7 + elif self.cat == "voleur": + return randint(1, 20) + self.exp * 9 + elif self.cat == "elfe": + return randint(1, 20) + self.exp * 10 + + def change_pdv(self, nb_pdv): + self.pdv = max(0, self.pdv + nb_pdv) # Les points de vie ne peuvent pas être négatifs enfin je croi + + def change_exp(self, nb_exp): + self.exp += nb_exp + + def affiche_caracteristiques(self): print ("ton nom es",self.nom,"tu es un(e)",self.cat,"tu as",self.pdv,"pv","et",self.exp,"exp") - - def affiche_inventaire (self): - print (self.inventaire) - + + def affiche_inventaire(self): + print ("ton inventaire",self.inventaire) + + def utiliser_potion(self): + if self.potions > 0: + self.change_pdv(10) + self.potions -= 1 + print( self.nom, "utilise une potion ! Il reste ",self.potions," potion.") + else: + print( self.nom, "a plus de potions !") + + def game(): - Player_1_nom = input ("comment vous appeler vous joueur 1?") - print ("bonjour cher",Player_1_nom) - Player_1_cat = input ("quelle catégorie voulez vous etre ? \n Pour un guerrier = 1. \n Pour un magicien = 2. \n Pour un Voleur = 3 \n et enfin un mage = 4.") + Player_1_nom = input("Comment vous appelez-vous, joueur 1 ? ") + print("Bonjour cher", Player_1_nom) + Player_1_cat = input("Quelle catégorie voulez-vous être ? \n1: Guerrier \n2: Magicien \n3: Voleur \n4: Elfe\n") + if Player_1_cat == "1": - Player_1_cat = "Apprenti Guerrier" - if Player_1_cat == "2": - Player_1_cat = "Puissant Magicien" - if Player_1_cat == "3": - Player_1_cat = "vicieux de Voleur" - if Player_1_cat == "4": - Player_1_cat = "magnifique Elfe" - print ("Bien que votre souhait sois exaucé vous etes un" ,Player_1_cat) + Player_1_cat = "guerrier" + elif Player_1_cat == "2": + Player_1_cat = "magicien" + elif Player_1_cat == "3": + Player_1_cat = "voleur" + elif Player_1_cat == "4": + Player_1_cat = "elfe" + + print("Vous etes maintenant un(e)", Player_1_cat) - Player_2_nom = input ("A votre tour Joueur 2 comment vous appeler vous?") - print ("bonjour cher",Player_2_nom) - Player_2_cat = input ("quelle catégorie voulez vous etre ? \n Pour un guerrier = 1. \n Pour un magicien = 2. \n Pour un Voleur = 3 \n et enfin un mage = 4.") + Player_2_nom = input("À votre tour, Player 2, comment vous appelez-vous ? ") + print("Bonjour cher", Player_2_nom) + Player_2_cat = input("Quelle catégorie voulez-vous être ? \n1: Guerrier \n2: Magicien \n3: Voleur \n4: Elfe\n") + if Player_2_cat == "1": - Player_2_cat = "Apprenti Guerrier" - if Player_2_cat == "2": - Player_2_cat = "Puissant Magicien" - if Player_2_cat == "3": - Player_2_cat = "Fripon le Voleur" - if Player_2_cat == "4": - Player_2_cat = "Un magnifique Elfe" - print ("Bien que votre souhait sois exaucé vous etes un" ,Player_2_cat) - - Player_1 = Personnage (Player_1_nom, Player_1_cat) - Player_2 = Personnage (Player_2_nom, Player_2_cat) + Player_2_cat = "guerrier" + elif Player_2_cat == "2": + Player_2_cat = "magicien" + elif Player_2_cat == "3": + Player_2_cat = "voleur" + elif Player_2_cat == "4": + Player_2_cat = "elfe" + + print("Vous etes maintenant un(e)", Player_2_cat) -def tour (): - while Player_1.pdv > 0 and player_2.pdv > 0 : - PL1_A = player_1.jet_attaque() - PL2_D = player_2.jet_defence() + #les joueur ;) + Player_1 = Personnage(Player_1_nom, Player_1_cat) + Player_2 = Personnage(Player_2_nom, Player_2_cat) - if PL1_A > PL2_D: - Player_1.change_pdv(-randint(1,8)) - + return Player_1, Player_2 + + + +def tour(attaquant, defenseur): + action = input(attaquant.nom + " vous pouvez attaquer ou utiliser une potion de soins (il vous reste " + str(attaquant.potions) + " potion(s)).\n" + + "Quelle est votre action ? (A pour attaquer / P pour utiliser une potion) ") + + if action == "A":#il y a un probleme que j'arrive pas a resoudre c'est si la personne mes pas en majuscule sa fonctionne pas + attaque = attaquant.jet_attaque() + defense = defenseur.jet_defense() + print(attaquant.nom + " attaque avec un score de " + str(attaque) + " !") + print(defenseur.nom + " se défend avec un score de " + str(defense) + " !") + + if attaque > defense: + dommages = -randint(1, 8) + defenseur.change_pdv(dommages) + print(defenseur.nom + " subit " + str(-dommages) + " points de dégâts !") + else: + dommages = -randint(1, 4) + attaquant.change_pdv(dommages) + print(attaquant.nom + " subit " + str(-dommages) + " points de dégâts !") + print(defenseur.nom + " parvient à se défendre !") - - - \ No newline at end of file + elif action == "P": + attaquant.utiliser_potion() + + attaquant.affiche_caracteristiques() + defenseur.affiche_caracteristiques() + + +# Lancer la partie je me suis aider sur internet pour la fin comment arreter la boucle grace au break. +Player_1, Player_2 = game() + +while Player_1.pdv > 0 and Player_2.pdv > 0: + tour(Player_1, Player_2) + if Player_2.pdv <= 0: + print(Player_1.nom + " a gagné !") + break + tour(Player_2, Player_1) + if Player_1.pdv <= 0: + print(Player_2.nom + " a gagné !")#je ne sais pas pourquoi se ne met pas que le gagnant a gagner. \ No newline at end of file