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.

120 lines
4.5 KiB

from random import*
class Personnage:
def __init__(self, nom, cat):
self.nom = nom
self.cat = cat
self.pdv = 20
self.exp = 1
self.inventaire = []
if self.cat == "Géant":
self.inventaire = ["3 Rochers géants", "Grosse potion"]
self.coefAtk = 6
self.coefDef = 10
elif self.cat == "Fée":
self.inventaire = ["Arc féerique", "Potion"]
self.coefAtk = 9
self.coefDef = 7
elif self.cat == "Démon":
self.inventaire = ["épée malveillante", "Potion"]
self.coefAtk = 8
self.coefDef = 8
elif self.cat == "Déesee":
self.inventaire = ["Bâton miraculeux", "Potion"]
self.coefAtk = 7
self.coefDef = 9
def jet_attaque(self):
"""renvoie jet d'attaque"""
atkPoints = randint(1, 20)
return atkPoints + self.exp*self.coefAtk*0.1
def jet_defense(self):
"""renvoie jet de défense"""
defPoints = randint(1, 20)
return defPoints + self.exp*self.coefDef*0.1
def change_pdv(self, nb_pdv):
"""modifie le nombre de points de vie"""
self.pdv = self.pdv + nb_pdv
def regen_pdv(self):
"""régénère les points de vie des 2 personnages pour un nouveau combat"""
self.pdv = 20
def nombre_pdv(self):
"""renvoie le nombre de points de vie d'un personnage"""
return self.pdv
def change_exp(self, nb_exp):
"""modifie le nombre d'expérience"""
self.exp = self.exp + nb_exp
def affiche_nom(self):
"""renvoie le nom du personnage"""
return self.nom
def affiche_caracteristiques(self):
"""affiche les caractéristiques du personnage (nom, catégorie, pdv, pts d'exp)"""
print("Nom :", self.nom)
print("Catégorie :", self.cat)
print("Points de vie :", self.pdv)
print("Points d'expérience:", self.exp)
print("")
def affiche_inventaire(self):
"""affiche le contenu de l'inventaire du personnage"""
print("Contenu de l'inventaire de", self.nom, ":",self.inventaire)
def combat(Perso1, Perso2):
"""simule un combat jusqu'à ce qu'un personnage n'a plus de points de vie puis donne un point d'expérience au survivant"""
roleAtk = Perso1
roleDef = Perso2
while Perso1.nombre_pdv() > 0 and Perso2.nombre_pdv() > 0:
if roleAtk.jet_attaque() > roleDef.jet_defense():
degats1 = -randint(1, 8)
roleDef.change_pdv(degats1)
print(roleAtk.nom, "a infligé", degats1*-1, "de dégats à", roleDef.nom)
elif roleAtk.jet_attaque() < roleDef.jet_defense():
degats2 = -randint(1, 4)
roleAtk.change_pdv(degats2)
print(roleDef.nom, "a infligé", degats2*-1, "de dégats à", roleAtk.nom)
elif roleAtk.jet_attaque() == roleDef.jet_defense():
roleAtk.change_pdv(-9999999999)
roleDef.change_pdv(-9999999999)
Perso1.affiche_caracteristiques()
Perso2.affiche_caracteristiques()
roleAtk, roleDef = roleDef, roleAtk
if Perso1.nombre_pdv() > 0:
print(Perso2.affiche_nom(), "a succombé, la victoire revient à ",Perso1.affiche_nom(), "qui remporte un point d'expérience !")
Perso1.change_exp(1)
elif Perso2.nombre_pdv() > 0:
print(Perso1.affiche_nom(), "a succombé, la victoire revient à ",Perso2.affiche_nom(), "qui remporte un point d'expérience !")
Perso2.change_exp(1)
elif Perso1.nombre_pdv() < 0 and Perso2.nombre_pdv() < 0:
print("Le jet d'attaque et le jet de défense fuent de force égale ce qui a provoqué par une raison inexpliquable, une onde de choc et a alarmé la Corée du Nord ! Pris de panique, King jong-un lance une bombe atomique sur votre position !", Perso1.affiche_nom(), "et", Perso2.affiche_nom(), "ont tous deux succombés ! Match nul mais allez jouer au Loto!")
Perso1.regen_pdv()
Perso2.regen_pdv()
def commencer(nom1, nom2):
Classe1 = input("Bien, veuillez choisir la classe du premier combattant (Choix entre Démon ; Fée ; Déesee ; Géant)")
nom1 = Personnage(nom1, Classe1)
Classe2 = input("Bien, veuillez choisir la classe du second combattant (Choix entre Démon ; Fée ; Déesee ; Géant)")
nom2 = Personnage(nom2, Classe2)
combat(nom1, nom2)