From 43a4d969b9e4f326580d87dbc17234805637bb50 Mon Sep 17 00:00:00 2001 From: Locks <> Date: Tue, 20 Sep 2022 23:31:15 +0200 Subject: [PATCH] version finale qui marche (enfin) --- jeu_role_LJO_4.0.py | 149 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 jeu_role_LJO_4.0.py diff --git a/jeu_role_LJO_4.0.py b/jeu_role_LJO_4.0.py new file mode 100644 index 0000000..1ff840b --- /dev/null +++ b/jeu_role_LJO_4.0.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- +""" +Éditeur : Loïc J-O +Version 1.0 +Jeu de rôle (version basique) + +Définit la classe Personnage, une fonction de combat, +Initialise les 2 combattants (saisie clavier du nom et de la catégorie de chaque combattant) +Lance le combat, affiche le résultat à chaque échange puis affiche le résultat final. + +""" +import random + +class Personnage: + + def __init__ (self, nom, cat): + '''Initialisation de la class "Personnage" ayant comme attribus: + nom, hp (pdv), xp (exp), cat, inventaire + ''' + '''Attributs invariants : + nom : nom du personnage + cat : la catégorie (guerrier, magicien, voleur, elfe) + ''' + + self.nom = nom + self.hp = 20 + self.xp = 1 + self.cat = cat + + if self.cat == "guerrier" : + 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): + '''Renvoie le jet d'attaque.''' + if self.cat == "guerrier" or self.cat == "magicien": + coef = 10 + elif self.cat == "voleur": + coef = 3 + elif self.cat == "elfe": + coef = 8 + return random.randint(1, 20) + self.xp * coef + + def jet_defense (self): + '''Renvoie le jet de défense.''' + if self.cat == "guerrier": + coef = 8 + elif self.cat == "magicien": + coef = 7 + elif self.cat == "voleur": + coef = 9 + elif self.cat == "elfe": + coef = 10 + return random.randint(1, 20) + self.xp * coef + + def change_hp (self, nb_hp): + self.hp = self.hp + nb_hp + + def change_xp (self, nb_xp): + self.xp = self.xp + nb_xp + + def affiche_caracteristiques (self): + print("Le Grand", self.nom, " : ", self.cat, ", Points de vie : ", self.hp, ", Expérience : ", self.xp) + + def affiche_inventaire (self): + print("Inventaire : ", self.inventaire) + + + +def Main_Combat (): + ''' + Fonction qui simule un combat + player 1 attaque en premier, puis player 2 ... jusqu à ce qu'un joueur n'ait plus de point de vie. + Sortie : on affiche le gagnant et les caractéristiques des combattants (le gagnant voyant son Xp incrémentée de 1) + ''' + + ''' + Initialisation d'une variable i permettant de chnager d'attaquant entre deux coups : + dans le code, si i est impair, player 1 attaque, si i est pair, player 2 attaque. + ''' + print("**********************************") + + i=1 + + while player1.hp > 0 and player2.hp > 0: + if i % 2 != 0 : + ''' i impair : attaque de player 1 ''' + if player1.jet_attaque() > player2.jet_defense() : + player2.change_hp(- random.randint(1, 8)) + print(player1.nom," gagne son attaque, ", player2.nom," perd des points !" ) + else : + player1.change_hp(- random.randint(1, 4)) + print(player1.nom, " perd son attaque, ", player1.nom," perd des points !") + + else : + ''' i pair => attaque de player 2''' + if player2.jet_attaque() > player1.jet_defense() : + player1.change_hp(- random.randint(1, 8)) + print(player2.nom," gagne son attaque, ", player1.nom," perd des points !" ) + else : + player2.change_hp(- random.randint(1, 4)) + print(player2.nom, " perd son attaque, ", player2.nom," perd des points !" ) + i=i+1 + + print("Bilan des 2 joueurs suite à l'attaque :") + player1.affiche_caracteristiques() + player2.affiche_caracteristiques() + print("**********************************") + + if player1.hp <= 0: + winner = player2.nom + player2.change_xp(+1) + else : + winner = player1.nom + player1.change_xp(+1) + + + print("FIN DU COMBAT !!!") + print("Le gagnant du combat est le Grand ", winner, " en ", i-1, " échange(s)") + player1.affiche_caracteristiques() + player2.affiche_caracteristiques() + print("**********************************") + + + + +''' Blabla : ''' +print ("Jeu de rôle - choississez 2 combattants : leurs noms et leurs catégories, et le combat démarre !") + +''' Instanciation de 2 combattants : ''' + +Test=False +while (Test==False): + player1 = Personnage(input("Joueur 1, veuillez choisissez votre nom : "), input("Joueur 1, veuillez choisissez votre catégorie (guerrier, magicien, elfe, voleur) : ")) + player2 = Personnage(input("Joueur 2, veuillez choisissez votre nom : "), input("Joueur 2, veuillez choisissez votre catégorie (guerrier, magicien, elfe, voleur): ")) + + if (player1.cat=="guerrier" or player1.cat=="magicien" or player1.cat=="voleur" or player1.cat=="elfe" ) and (player2.cat=="guerrier" or player2.cat=="magicien" or player2.cat=="voleur" or player2.cat=="elfe"): + Test = True + else: + print("Cette catégorie de personnage n'existe pas !") + + +'''Combat :''' +Main_Combat() \ No newline at end of file