From fc2b2bfcfda8c694d2379893d5a2dfaf2798f262 Mon Sep 17 00:00:00 2001 From: mathis <> Date: Fri, 20 Sep 2024 22:41:08 +0200 Subject: [PATCH] fini sans tk --- jeuderôlesanstk.py | 224 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 jeuderôlesanstk.py diff --git a/jeuderôlesanstk.py b/jeuderôlesanstk.py new file mode 100644 index 0000000..0f81d29 --- /dev/null +++ b/jeuderôlesanstk.py @@ -0,0 +1,224 @@ +import random + +#--class +class Personne: + def __init__(self, nom, cat): + self.__nom = nom + self.__xp = 1 + self.__cat = cat + self.__pot = 2 + if self.__cat == 'guerrier': + self.__hp = 20 + elif self.__cat == 'mage': + self.__hp =20 + elif self.__cat == 'voleur': + self.__hp = 30 + elif self.__cat == 'elfe': + self.__hp = 22 + if cat == 'guerrier': + self.__inv = ['epee', 'potion'] + elif cat == 'mage': + self.__inv = ['baton', 'potion'] + elif cat == 'voleur': + self.__inv = ['dague', 'potion'] + elif cat == 'elfe': + self.__inv = ['arc', 'potion'] + if self.get_cat() == 'guerrier' or self.get_cat() == 'mage': + self.__coefAtq = 10 + elif self.get_cat() == 'voleur': + self.__coefAtq = 3 + elif self.get_cat() == 'elfe': + self.__coefAtq = 8 + if self.get_cat() == 'guerrier': + self.__coefDef = 8 + elif self.get_cat() == 'mage': + self.__coefDef = 7 + elif self.get_cat() == 'voleur': + self.__coefDef = 9 + elif self.get_cat() == 'elfe': + self.__coefDef = 10 + + def get_nom(self): + return self.__nom + + def get_hp(self): + return self.__hp + + def get_xp(self): + return self.__xp + + def get_cat(self): + return self.__cat + + def get_pot(self): + return self.__pot + + def get_inv(self): + return self.__inv + + def get_coef_atq(self): + return self.__coefAtq + + def get_coef_def(self): + return self.__coefDef + + def set_nom(self, nom): + self.__nom = nom + + def jet_attaque(self): + return random.randint(1, 20) + (self.get_xp()*self.get_coef_atq()) + + def jet_defense(self): + return random.randint(1, 20) + (self.get_xp()*self.get_coef_def()) + + def change_pdv(self, nb_pdv): + self.__hp += nb_pdv + + def change_exp(self, nb_exp): + self.__xp += nb_exp + + def affiche_caracteristiques(self): + print('caractéristiques de ', self.get_nom(),':', + '\n catégorie: ', self.get_cat(), + '\n hp: ', self.get_hp(), + '\n xp: ', self.get_xp(), + ) + + def affiche_inventaire(self): + print('\n votre inventaire: ', self.get_inv()) + +#--main +nb_tour = 0 +liste_tour = ['bot', 'joueur'] + + #--round +def tour(attaquant, defenseur): + global nb_tour + nb_tour += 1 + liste_tour.reverse() + attaquant = liste_tour[0] + defenseur = liste_tour[1] + nb_potions = joueur.get_pot() + if attaquant == 'joueur': + print("\nTour n°", nb_tour) + action = input(print("\nvous pouvez attaquer ou utiliser une potion de soins(possédée(s):", nb_potions, "),", + "\nquelle est votre action?", + "\nA pour attaquer / E pour potion")).upper() + if action == "A": + dmg = joueur.jet_attaque() + print("\nvous lancez un jet d'attaque...", + "\nvotre jet d'attaque vaut: ", dmg, "...") + shield = bot.jet_defense() + print("\ndonc votre adversaire lance un jet de defense...", + "\nle jet de defense ennemie vaut: ", shield, "...") + elif action == "E": + if nb_potions < 0: + joueur.change_pdv(10) + joueur.__pot -= 1 + print("\nvous vous soignez...", + "\nil vous reste ", joueur.get_pot(), " potion(s)") + else: + print("\nvous n'avez plus de potions") + tour(attaquant, defenseur) + if dmg > shield: + nb_pdv = (-1) * random.randint(1,8) + bot.change_pdv(nb_pdv) + print("\nvous avez remporté le tour...", + "\net infligé ", -nb_pdv, "pts de dégats à l'ennemie!") + elif dmg < shield: + nb_pdv = (-1) * random.randint(1,4) + joueur.change_pdv(nb_pdv) + print("\nvous avez perdu le tour...", + "\net reçu ", -nb_pdv, "pts de dégats de l'ennemie!") + else: + print('\nparade parfaite: aucun des joueur ne perd de points de vie') + elif attaquant == 'bot': + print("\nTour n°", nb_tour) + dmg = bot.jet_attaque() + print("\nvotre adversaire lance un jet d'attaque...", + "\nle jet d'attaque ennemie vaut: ", dmg, "...") + action = input(print("\nvous pouvez vous defendre ou utiliser une potion de soins(possédée(s):", nb_potions, "),", + "\nquelle est votre action?", + "\nZ pour defendre / E pour potion")).upper() + if action =="Z": + shield = joueur.jet_defense() + print("\nvous lancez un jet de defense...", + "\nvotre jet de defense vaut: ", shield, "...") + elif action == "E": + if nb_potions < 0: + joueur.change_pdv(10) + joueur.__pot -= 1 + print("\nvous vous soignez...", + "\nil vous reste ", joueur.get_pot(), " potion(s).") + else: + print("\nvous n'avez plus de potions") + tour(attaquant, defenseur) + if dmg > shield: + nb_pdv = (-1) * random.randint(1,8) + joueur.change_pdv(nb_pdv) + print("\nvous avez perdu le tour...", + "\net reçu ", -nb_pdv, "pts de dégats de l'ennemie!") + elif dmg < shield: + nb_pdv = (-1) * random.randint(1,4) + bot.change_pdv(nb_pdv) + print("\nvous avez remporté le tour...", + "\net infligé ", -nb_pdv, "pts de dégats à l'ennemie!") + else: + print('\nparade parfaite: aucun des joueur ne perd de points de vie') + + #--game +liste = ['defenseur', 'attaquant'] + +def jeu(joueur, bot): + jhp = player.get_hp() + bhp = enemy.get_hp() + liste.reverse() + joueur = liste[0] + bot = liste[1] + if joueur == 'attaquant' and jhp > 0 and bhp > 0: + tour(joueur, bot) + player.affiche_caracteristiques() + enemy.affiche_caracteristiques() + jeu(joueur, bot) + elif bot == 'attaquant' and jhp > 0 and bhp > 0: + tour(bot, joueur) + player.affiche_caracteristiques() + enemy.affiche_caracteristiques() + jeu(joueur, bot) + elif player.get_hp() > 0: + player.change_exp(1) + print("\n VICTOIRE!", "\nvous avez gagné le combat! et remporté 1 point d'experience!") + joueur = Personne('joueur', 'guerrier') + bot = Personne('bot', 'voleur') + else: + enemy.change_exp(1) + print("\n DEFAITE!", "\nvous avez perdu!") + joueur = Personne('joueur', 'guerrier') + bot = Personne('bot', 'voleur') + + #--player character choice +def choix(): + n = input("\nquel est le nom de votre personnage? :") + classe = input("\nappuyez sur: \n A pour guerrier, \n Z pour mage, \n E pour voleur, \n R pour elfe \n").upper() + if classe == "A": + return Personne(n, "guerrier") + if classe == "Z": + return Personne(n, "mage") + if classe == "E": + return Personne(n, "voleur") + if classe == "R": + return Personne(n, "elfe") + + #--random bot +def rand(): + name = ["Darius", "Garen", "Zac", "Ashe", "Elise", "Gwen"] + cat = ["guerrier", "mage", "voleur", "elfe"] + name_r = random.choice(name) + cat_r = random.choice(cat) + return Personne(name_r, cat_r) + +joueur = choix() +player = joueur +bot = rand() +enemy = bot +jeu(joueur, bot) \ No newline at end of file