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.
81 lines
2.6 KiB
81 lines
2.6 KiB
import random
|
|
|
|
class Personnage:
|
|
def __init__(self, nom, cat):
|
|
self.nom = nom
|
|
self.pdv = 20
|
|
self.exp = 1
|
|
self.cat = cat
|
|
self.inventaire = []
|
|
|
|
def jet_attaque(self):
|
|
coefficient = 10 # Coeff de base
|
|
if self.cat == "guerrier":
|
|
coefficient = 10
|
|
elif self.cat == "magicien":
|
|
coefficient = 10
|
|
elif self.cat == "voleur":
|
|
coefficient = 3
|
|
elif self.cat == "elfe":
|
|
coefficient = 8
|
|
|
|
return random.randint(1, 20) + self.exp * coefficient
|
|
|
|
def jet_defense(self):
|
|
coefficient = 8 # Coeff de base
|
|
if self.cat == "guerrier":
|
|
coefficient = 8
|
|
elif self.cat == "magicien":
|
|
coefficient = 7
|
|
elif self.cat == "voleur":
|
|
coefficient = 9
|
|
elif self.cat == "elfe":
|
|
coefficient = 10
|
|
|
|
return random.randint(1, 20) + self.exp * coefficient
|
|
|
|
def change_pdv(self, ab_pdv):
|
|
self.pdv += ab_pdv
|
|
|
|
def change_exp(self, ab_exp):
|
|
self.exp += ab_exp
|
|
|
|
def affiche_caracteristiques(self):
|
|
print(f"Nom: {self.nom}")
|
|
print(f"Catégorie: {self.cat}")
|
|
print(f"Points de vie: {self.pdv}")
|
|
print(f"Expérience: {self.exp}")
|
|
|
|
def affiche_inventaire(self):
|
|
print(f"Inventaire de {self.nom}: {', '.join(self.inventaire)}")
|
|
|
|
# Creation des personnage
|
|
personnage1 = Personnage("kratos", "guerrier")
|
|
personnage2 = Personnage("dumbeldore", "magicien")
|
|
|
|
# Simu de combat
|
|
while personnage1.pdv > 0 and personnage2.pdv > 0:
|
|
attaquant = personnage1 if random.choice([True, False]) else personnage2
|
|
defenseur = personnage2 if attaquant == personnage1 else personnage1
|
|
|
|
attaque = attaquant.jet_attaque()
|
|
defense = defenseur.jet_defense()
|
|
|
|
if attaque > defense:
|
|
dommages = random.randint(1, 8)
|
|
defenseur.change_pdv(-dommages)
|
|
print(f"{attaquant.nom} attaque {defenseur.nom} et inflige {dommages} points de dégâts.")
|
|
else:
|
|
dommages = random.randint(1, 4)
|
|
attaquant.change_pdv(-dommages)
|
|
print(f"{attaquant.nom} attaque {defenseur.nom}, mais {defenseur.nom} se défend et prend seulement {dommages} points de dégâts.")
|
|
|
|
# Affiche caracteristique
|
|
personnage1.affiche_caracteristiques()
|
|
personnage2.affiche_caracteristiques()
|
|
|
|
# Ajoute de l'exp au survivant a la fin du combat
|
|
gagnant = personnage1 if personnage1.pdv > 0 else personnage2
|
|
gagnant.change_exp(1)
|
|
|
|
print(f"{gagnant.nom} a gagné le combat et reçoit 1 point d'expérience.")
|
|
|