@ -1,5 +1,7 @@
from random import randint
import time
class Personnage :
#initialisation de la classe avec les attributs
def __init__ ( self , nom ) :
self . nom = nom
self . pdv = 20
@ -8,6 +10,7 @@ class Personnage:
self . inventaire = [ " potion " ]
def menu ( self ) :
#le menu pour choisir ca catégorie
self . cat = int ( input ( """
1 : guerrier
2 : magicien
@ -15,8 +18,17 @@ class Personnage:
4 : elfe
""" ))
if self . cat == 1 :
self . cat_affiche = " guerrier "
if self . cat == 2 :
self . cat_affiche = " magicien "
if self . cat == 3 :
self . cat_affiche = " voleur "
if self . cat == 4 :
self . cat_affiche = " elfe "
def jet_attaque ( self ) :
#le jet de dé d'attaque
lancer = randint ( 1 , 20 )
if self . cat == 1 or self . cat == 2 :
damage = self . exp * 10
@ -27,6 +39,7 @@ class Personnage:
return lancer + damage
def jet_defense ( self ) :
#le jet de dé de défense
lancer = randint ( 1 , 20 )
if self . cat == 1 :
defense = self . exp * 8
@ -39,20 +52,28 @@ class Personnage:
return lancer + defense
def change_pdv ( self , nb_pdv ) :
#la méthode pour changee les points de vie
self . pdv + = nb_pdv
def change_exp ( self , nb_exp ) :
#la méthode pour changer l'expérience
if nb_exp < = 0 :
raise ValueError ( " Le nombre doit être positif ou nul " )
self . exp + = nb_exp
def affiche_caracteristiques ( self ) :
#la méthode qui affiche les caractéristiques
print ( """
vous vous appellez { }
vous êtes un { }
vous avez { } point de vie et { } éxpérience """ .format(self.nom, self.cat, self.pdv, self.exp))
vous avez { } point de vie et { } éxpérience """ .format(self.nom, self.cat_affiche , self.pdv, self.exp))
def affiche_inventaire ( self ) :
#la méthode qui affiche l'inventaire
armes = [ " épée " , " bâton " , " dague " , " arc " ]
for arme in armes :
if arme in self . inventaire :
self . inventaire . remove ( arme )
if self . cat == 1 :
self . inventaire . append ( " épée " )
print ( self . inventaire )
@ -69,7 +90,53 @@ class Personnage:
print ( " vous n ' avez pas de catégorie " )
self . menu ( )
def combat ( perso1 , perso2 ) :
#le combat chaque tout l'attaquant et le défenseur jettent un dé celui qui a le meilleur score inflige des dégats à son adversaire puis les rôles s'inversent jusqu'à la défaire de l'un
tour = 1
attaquant , defenseur = perso1 , perso2
while perso1 . pdv > 0 and perso2 . pdv > 0 :
print ( " --- tour {} --- \n " . format ( tour ) )
print ( " {} attaque " . format ( attaquant . nom ) )
attaque = attaquant . jet_attaque ( )
defense = defenseur . jet_defense ( )
print ( " l ' attaque est de {} et la défense est de {} \n " . format ( attaque , defense ) )
if attaque > defense :
degats = randint ( 1 , 8 )
print ( " {} degats \n " . format ( degats ) )
defenseur . change_pdv ( - degats )
elif defense > attaque :
degats = randint ( 1 , 4 )
print ( " {} degats \n " . format ( degats ) )
attaquant . change_pdv ( - degats )
else :
degats = 0
print ( " {} degats \n " . format ( degats ) )
if defenseur . pdv < = 0 :
print ( " {} vaincu {} gagne \n " . format ( defenseur . nom , attaquant . nom ) )
attaquant . change_exp ( 1 )
print ( " {} gagne 1 xp \n " . format ( attaquant . nom ) )
attaquant . affiche_caracteristiques ( )
break
if attaquant . pdv < = 0 :
print ( " {} vaincu {} gagne " . format ( attaquant . nom , defenseur . nom ) )
defenseur . change_exp ( 1 )
print ( " {} gagne 1 xp " . format ( defenseur . nom ) )
defenseur . affiche_caracteristiques ( )
break
print ( " {} a {} point de vie et {} a {} point de vie \n " . format ( perso1 . nom , perso1 . pdv , perso2 . nom , perso2 . pdv ) )
attaquant , defenseur = defenseur , attaquant
tour + = 1
input ( " appuyer sur Entrée pour continuer... \n " )
perso1 = Personnage ( " Jean " )
perso1 . menu ( )
perso2 = Personnage ( " Victor " )
perso2 . menu ( )
mon_personnage = Personnage ( " Seyba " )
combat ( perso1 , perso2 )