You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.5 KiB

import random
class Personnage :
def __init__ (self, nom, cat):
self.nom = nom
self.pdv = 20
self.exp = 1
self.cat = cat
self.inventaire = self.init_inventaire()
def init_inventaire(self) :
if self.cat == "guerrier":
return ["épée", "potion"]
elif self.cat == "magicien":
return ["bâton", "potion"]
elif self.cat == "voleur":
return ["dague", "potion"]
elif self.cat == "elfe":
return ["arc", "potion"]
else:
return []
def jet_attaque (self) :
lancer = random.randint(1,20)
if self.cat == "guerrier" :
coef = self.exp * 10
if self.cat == "magicien" :
coef = self.exp * 10
if self.cat == "voleur" :
coef = self.exp * 3
if self.cat == "elfe" :
coef = self.exp * 8
somme = coef + lancer
return somme
def jet_defense (self) :
lancer = random.randint(1,20)
if self.cat == "guerrier" :
coef = self.exp * 8
if self.cat == "magicien" :
coef = self.exp * 7
if self.cat == "voleur" :
coef = self.exp * 9
if self.cat == "elfe" :
coef = self.exp * 10
somme = coef + lancer
return somme
def change_pdv (self, nb_pdv) :
self.pdv = self.pdv + nb_pdv
def change_exp (self, nb_exp) :
self.exp = self.exp + nb_exp
def affiche_caracteristiques (self) :
print("Les points de vies de", self.nom, "sont à", self.pdv, ". Ses points d'expériences sont à", self.exp, ". Sa catégorie est", self.cat, ".")
def affiche_inventaire(self) :
print("Inventaire de", self.nom, ":", ", ".join(self.inventaire))
def affiche_pdv(self):
print("<3 <3 <3 <3 Les points de vies de", self.nom, "sont à", self.pdv)
def creer_personnage () :
nom = input("Entrez le nom du personnage :")
print("Choississez la classe parmi:")
print("1 - Guerrier")
print("2 - Magicien")
print("3 - Voleur")
print("4 - Elfe")
choix = input("Selectionnez le numero de votre classe :")
while choix not in ["1", "2", "3", "4"] :
print("Choix invalide, entrez un numero entre 1 et 4")
choix = input("Selectionnez le numero de votre classe :")
if choix == "1":
cat = "guerrier"
elif choix == "2" :
cat = "magicien"
elif choix == "3" :
cat = "voleur"
elif choix == "4" :
cat = "elfe"
return Personnage(nom, cat)
def combat (p1, p2) :
print("< < < < < Début du combat > > > > >")
p1.affiche_caracteristiques()
p2.affiche_caracteristiques()
attaquant = p1
defenseur = p2
while p1.pdv > 0 and p2.pdv > 0 :
print()
print("!!!", attaquant.nom, "attaque", defenseur.nom, "!!!")
att = attaquant.jet_attaque()
defe = defenseur.jet_defense()
print(">>>>> Jet d'attaque de", attaquant.nom, ":", att)
print()
print("<<<<< Jet de défense de", defenseur.nom, ":", defe)
if att > defe :
degats = random.randint(1, 8)
print(defenseur.nom, "est touché et perd", degats, "points de vies !")
defenseur.change_pdv(-degats)
p2.affiche_pdv()
elif att < defe:
degats = random.randint(1,4)
print(attaquant.nom, "rate son coup, et perd", degats, "points de vies !")
attaquant.change_pdv(-degats)
p1.affiche_pdv()
else :
print(attaquant.nom, "trébuche sur un caillou, et", defenseur.nom, "se raille de lui..")
p1.affiche_pdv()
p2.affiche_pdv()
if p1.pdv == 0 or p2.pdv == 0 :
print()
p1.affiche_caracteristiques()
p2.affiche_caracteristiques()
attaquant, defenseur = defenseur, attaquant
print()
print(" < < < < < Fin du combat > > > > >")
if p1.pdv <= 0:
print(p1.nom, "est mort des coups de", p2.nom, "!")
print(p2.nom, "gagne 1 point d'expérience.")
p2.change_exp(1)
else:
print(p2.nom, "est mort des coups de", p1.nom, "!")
print(p1.nom, "gagne 1 point d'expérience.")
p1.change_exp(1)
print()
p1.affiche_caracteristiques()
p2.affiche_caracteristiques()
p1 = creer_personnage()
print("Joueur 1 :")
p1.affiche_caracteristiques()
p1.affiche_inventaire()
p2 = creer_personnage()
print("Joueur 2 :")
p2.affiche_caracteristiques()
p2.affiche_inventaire()