# -*- 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()