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.
142 lines
4.7 KiB
142 lines
4.7 KiB
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
|
|
self.exp = 1
|
|
self.cat = 0
|
|
self.inventaire = ["potion"]
|
|
|
|
def menu(self):
|
|
#le menu pour choisir ca catégorie
|
|
self.cat = int(input("""
|
|
1: guerrier
|
|
2: magicien
|
|
3: voleur
|
|
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
|
|
elif self.cat == 3:
|
|
damage = self.exp * 3
|
|
elif self.cat == 4:
|
|
damage = self.exp * 10
|
|
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
|
|
if self.cat == 2:
|
|
defense = self.exp * 7
|
|
elif self.cat == 3:
|
|
defense = self.exp * 9
|
|
elif self.cat == 4:
|
|
defense = self.exp * 8
|
|
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_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)
|
|
elif self.cat == 2:
|
|
self.inventaire.append("bâton")
|
|
print(self.inventaire)
|
|
elif self.cat == 3:
|
|
self.inventaire.append("dague")
|
|
print(self.inventaire)
|
|
elif self.cat == 4:
|
|
self.inventaire.append("arc")
|
|
print(self.inventaire)
|
|
else:
|
|
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()
|
|
|
|
combat(perso1, perso2)
|