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.
224 lines
7.6 KiB
224 lines
7.6 KiB
import random
|
|
|
|
#--class
|
|
class Personne:
|
|
def __init__(self, nom, cat):
|
|
self.__nom = nom
|
|
self.__xp = 1
|
|
self.__cat = cat
|
|
self.__pot = 2
|
|
if self.__cat == 'guerrier':
|
|
self.__hp = 20
|
|
elif self.__cat == 'mage':
|
|
self.__hp =20
|
|
elif self.__cat == 'voleur':
|
|
self.__hp = 30
|
|
elif self.__cat == 'elfe':
|
|
self.__hp = 22
|
|
if cat == 'guerrier':
|
|
self.__inv = ['epee', 'potion']
|
|
elif cat == 'mage':
|
|
self.__inv = ['baton', 'potion']
|
|
elif cat == 'voleur':
|
|
self.__inv = ['dague', 'potion']
|
|
elif cat == 'elfe':
|
|
self.__inv = ['arc', 'potion']
|
|
if self.get_cat() == 'guerrier' or self.get_cat() == 'mage':
|
|
self.__coefAtq = 10
|
|
elif self.get_cat() == 'voleur':
|
|
self.__coefAtq = 3
|
|
elif self.get_cat() == 'elfe':
|
|
self.__coefAtq = 8
|
|
if self.get_cat() == 'guerrier':
|
|
self.__coefDef = 8
|
|
elif self.get_cat() == 'mage':
|
|
self.__coefDef = 7
|
|
elif self.get_cat() == 'voleur':
|
|
self.__coefDef = 9
|
|
elif self.get_cat() == 'elfe':
|
|
self.__coefDef = 10
|
|
|
|
def get_nom(self):
|
|
return self.__nom
|
|
|
|
def get_hp(self):
|
|
return self.__hp
|
|
|
|
def get_xp(self):
|
|
return self.__xp
|
|
|
|
def get_cat(self):
|
|
return self.__cat
|
|
|
|
def get_pot(self):
|
|
return self.__pot
|
|
|
|
def get_inv(self):
|
|
return self.__inv
|
|
|
|
def get_coef_atq(self):
|
|
return self.__coefAtq
|
|
|
|
def get_coef_def(self):
|
|
return self.__coefDef
|
|
|
|
def set_nom(self, nom):
|
|
self.__nom = nom
|
|
|
|
def jet_attaque(self):
|
|
return random.randint(1, 20) + (self.get_xp()*self.get_coef_atq())
|
|
|
|
def jet_defense(self):
|
|
return random.randint(1, 20) + (self.get_xp()*self.get_coef_def())
|
|
|
|
def change_pdv(self, nb_pdv):
|
|
self.__hp += nb_pdv
|
|
|
|
def change_exp(self, nb_exp):
|
|
self.__xp += nb_exp
|
|
|
|
def affiche_caracteristiques(self):
|
|
print('caractéristiques de ', self.get_nom(),':',
|
|
'\n catégorie: ', self.get_cat(),
|
|
'\n hp: ', self.get_hp(),
|
|
'\n xp: ', self.get_xp(),
|
|
)
|
|
|
|
def affiche_inventaire(self):
|
|
print('\n votre inventaire: ', self.get_inv())
|
|
|
|
#--main
|
|
nb_tour = 0
|
|
liste_tour = ['bot', 'joueur']
|
|
|
|
#--round
|
|
def tour(attaquant, defenseur):
|
|
global nb_tour
|
|
nb_tour += 1
|
|
liste_tour.reverse()
|
|
attaquant = liste_tour[0]
|
|
defenseur = liste_tour[1]
|
|
nb_potions = joueur.get_pot()
|
|
if attaquant == 'joueur':
|
|
print("\nTour n°", nb_tour)
|
|
action = input(print("\nvous pouvez attaquer ou utiliser une potion de soins(possédée(s):", nb_potions, "),",
|
|
"\nquelle est votre action?",
|
|
"\nA pour attaquer / E pour potion")).upper()
|
|
if action == "A":
|
|
dmg = joueur.jet_attaque()
|
|
print("\nvous lancez un jet d'attaque...",
|
|
"\nvotre jet d'attaque vaut: ", dmg, "...")
|
|
shield = bot.jet_defense()
|
|
print("\ndonc votre adversaire lance un jet de defense...",
|
|
"\nle jet de defense ennemie vaut: ", shield, "...")
|
|
elif action == "E":
|
|
if nb_potions < 0:
|
|
joueur.change_pdv(10)
|
|
joueur.__pot -= 1
|
|
print("\nvous vous soignez...",
|
|
"\nil vous reste ", joueur.get_pot(), " potion(s)")
|
|
else:
|
|
print("\nvous n'avez plus de potions")
|
|
tour(attaquant, defenseur)
|
|
if dmg > shield:
|
|
nb_pdv = (-1) * random.randint(1,8)
|
|
bot.change_pdv(nb_pdv)
|
|
print("\nvous avez remporté le tour...",
|
|
"\net infligé ", -nb_pdv, "pts de dégats à l'ennemie!")
|
|
elif dmg < shield:
|
|
nb_pdv = (-1) * random.randint(1,4)
|
|
joueur.change_pdv(nb_pdv)
|
|
print("\nvous avez perdu le tour...",
|
|
"\net reçu ", -nb_pdv, "pts de dégats de l'ennemie!")
|
|
else:
|
|
print('\nparade parfaite: aucun des joueur ne perd de points de vie')
|
|
elif attaquant == 'bot':
|
|
print("\nTour n°", nb_tour)
|
|
dmg = bot.jet_attaque()
|
|
print("\nvotre adversaire lance un jet d'attaque...",
|
|
"\nle jet d'attaque ennemie vaut: ", dmg, "...")
|
|
action = input(print("\nvous pouvez vous defendre ou utiliser une potion de soins(possédée(s):", nb_potions, "),",
|
|
"\nquelle est votre action?",
|
|
"\nZ pour defendre / E pour potion")).upper()
|
|
if action =="Z":
|
|
shield = joueur.jet_defense()
|
|
print("\nvous lancez un jet de defense...",
|
|
"\nvotre jet de defense vaut: ", shield, "...")
|
|
elif action == "E":
|
|
if nb_potions < 0:
|
|
joueur.change_pdv(10)
|
|
joueur.__pot -= 1
|
|
print("\nvous vous soignez...",
|
|
"\nil vous reste ", joueur.get_pot(), " potion(s).")
|
|
else:
|
|
print("\nvous n'avez plus de potions")
|
|
tour(attaquant, defenseur)
|
|
if dmg > shield:
|
|
nb_pdv = (-1) * random.randint(1,8)
|
|
joueur.change_pdv(nb_pdv)
|
|
print("\nvous avez perdu le tour...",
|
|
"\net reçu ", -nb_pdv, "pts de dégats de l'ennemie!")
|
|
elif dmg < shield:
|
|
nb_pdv = (-1) * random.randint(1,4)
|
|
bot.change_pdv(nb_pdv)
|
|
print("\nvous avez remporté le tour...",
|
|
"\net infligé ", -nb_pdv, "pts de dégats à l'ennemie!")
|
|
else:
|
|
print('\nparade parfaite: aucun des joueur ne perd de points de vie')
|
|
|
|
#--game
|
|
liste = ['defenseur', 'attaquant']
|
|
|
|
def jeu(joueur, bot):
|
|
jhp = player.get_hp()
|
|
bhp = enemy.get_hp()
|
|
liste.reverse()
|
|
joueur = liste[0]
|
|
bot = liste[1]
|
|
if joueur == 'attaquant' and jhp > 0 and bhp > 0:
|
|
tour(joueur, bot)
|
|
player.affiche_caracteristiques()
|
|
enemy.affiche_caracteristiques()
|
|
jeu(joueur, bot)
|
|
elif bot == 'attaquant' and jhp > 0 and bhp > 0:
|
|
tour(bot, joueur)
|
|
player.affiche_caracteristiques()
|
|
enemy.affiche_caracteristiques()
|
|
jeu(joueur, bot)
|
|
elif player.get_hp() > 0:
|
|
player.change_exp(1)
|
|
print("\n VICTOIRE!", "\nvous avez gagné le combat! et remporté 1 point d'experience!")
|
|
joueur = Personne('joueur', 'guerrier')
|
|
bot = Personne('bot', 'voleur')
|
|
else:
|
|
enemy.change_exp(1)
|
|
print("\n DEFAITE!", "\nvous avez perdu!")
|
|
joueur = Personne('joueur', 'guerrier')
|
|
bot = Personne('bot', 'voleur')
|
|
|
|
#--player character choice
|
|
def choix():
|
|
n = input("\nquel est le nom de votre personnage? :")
|
|
classe = input("\nappuyez sur: \n A pour guerrier, \n Z pour mage, \n E pour voleur, \n R pour elfe \n").upper()
|
|
if classe == "A":
|
|
return Personne(n, "guerrier")
|
|
if classe == "Z":
|
|
return Personne(n, "mage")
|
|
if classe == "E":
|
|
return Personne(n, "voleur")
|
|
if classe == "R":
|
|
return Personne(n, "elfe")
|
|
|
|
#--random bot
|
|
def rand():
|
|
name = ["Darius", "Garen", "Zac", "Ashe", "Elise", "Gwen"]
|
|
cat = ["guerrier", "mage", "voleur", "elfe"]
|
|
name_r = random.choice(name)
|
|
cat_r = random.choice(cat)
|
|
return Personne(name_r, cat_r)
|
|
|
|
joueur = choix()
|
|
player = joueur
|
|
bot = rand()
|
|
enemy = bot
|
|
jeu(joueur, bot)
|