on va refaire Game Of Thrones . . .
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.

149 lines
5.2 KiB

# -*- coding: utf-8 -*-
"""
Éditeur : Loïc J-O
Version 1.0
Jeu de rôle (version basique)
Définit la classe Personnage, une fonction de combat,
Initialise les 2 combattants (saisie clavier du nom et de la catégorie de chaque combattant)
Lance le combat, affiche le résultat à chaque échange puis affiche le résultat final.
"""
import random
class Personnage:
def __init__ (self, nom, cat):
'''Initialisation de la class "Personnage" ayant comme attribus:
nom, hp (pdv), xp (exp), cat, inventaire
'''
'''Attributs invariants :
nom : nom du personnage
cat : la catégorie (guerrier, magicien, voleur, elfe)
'''
self.nom = nom
self.hp = 20
self.xp = 1
self.cat = cat
if self.cat == "guerrier" :
self.inventaire = ["épée", "potion"]
elif self.cat == "magicien" :
self.inventaire = ["bâton", "potion"]
elif self.cat == "voleur" :
self.inventaire = ["dague", "potion"]
elif self.cat == "elfe" :
self.inventaire = ["arc", "potion"]
def jet_attaque (self):
'''Renvoie le jet d'attaque.'''
if self.cat == "guerrier" or self.cat == "magicien":
coef = 10
elif self.cat == "voleur":
coef = 3
elif self.cat == "elfe":
coef = 8
return random.randint(1, 20) + self.xp * coef
def jet_defense (self):
'''Renvoie le jet de défense.'''
if self.cat == "guerrier":
coef = 8
elif self.cat == "magicien":
coef = 7
elif self.cat == "voleur":
coef = 9
elif self.cat == "elfe":
coef = 10
return random.randint(1, 20) + self.xp * coef
def change_hp (self, nb_hp):
self.hp = self.hp + nb_hp
def change_xp (self, nb_xp):
self.xp = self.xp + nb_xp
def affiche_caracteristiques (self):
print("Le Grand", self.nom, " : ", self.cat, ", Points de vie : ", self.hp, ", Expérience : ", self.xp)
def affiche_inventaire (self):
print("Inventaire : ", self.inventaire)
def Main_Combat ():
'''
Fonction qui simule un combat
player 1 attaque en premier, puis player 2 ... jusqu à ce qu'un joueur n'ait plus de point de vie.
Sortie : on affiche le gagnant et les caractéristiques des combattants (le gagnant voyant son Xp incrémentée de 1)
'''
'''
Initialisation d'une variable i permettant de chnager d'attaquant entre deux coups :
dans le code, si i est impair, player 1 attaque, si i est pair, player 2 attaque.
'''
print("**********************************")
i=1
while player1.hp > 0 and player2.hp > 0:
if i % 2 != 0 :
''' i impair : attaque de player 1 '''
if player1.jet_attaque() > player2.jet_defense() :
player2.change_hp(- random.randint(1, 8))
print(player1.nom," gagne son attaque, ", player2.nom," perd des points !" )
else :
player1.change_hp(- random.randint(1, 4))
print(player1.nom, " perd son attaque, ", player1.nom," perd des points !")
else :
''' i pair => attaque de player 2'''
if player2.jet_attaque() > player1.jet_defense() :
player1.change_hp(- random.randint(1, 8))
print(player2.nom," gagne son attaque, ", player1.nom," perd des points !" )
else :
player2.change_hp(- random.randint(1, 4))
print(player2.nom, " perd son attaque, ", player2.nom," perd des points !" )
i=i+1
print("Bilan des 2 joueurs suite à l'attaque :")
player1.affiche_caracteristiques()
player2.affiche_caracteristiques()
print("**********************************")
if player1.hp <= 0:
winner = player2.nom
player2.change_xp(+1)
else :
winner = player1.nom
player1.change_xp(+1)
print("FIN DU COMBAT !!!")
print("Le gagnant du combat est le Grand ", winner, " en ", i-1, " échange(s)")
player1.affiche_caracteristiques()
player2.affiche_caracteristiques()
print("**********************************")
''' Blabla : '''
print ("Jeu de rôle - choississez 2 combattants : leurs noms et leurs catégories, et le combat démarre !")
''' Instanciation de 2 combattants : '''
Test=False
while (Test==False):
player1 = Personnage(input("Joueur 1, veuillez choisissez votre nom : "), input("Joueur 1, veuillez choisissez votre catégorie (guerrier, magicien, elfe, voleur) : "))
player2 = Personnage(input("Joueur 2, veuillez choisissez votre nom : "), input("Joueur 2, veuillez choisissez votre catégorie (guerrier, magicien, elfe, voleur): "))
if (player1.cat=="guerrier" or player1.cat=="magicien" or player1.cat=="voleur" or player1.cat=="elfe" ) and (player2.cat=="guerrier" or player2.cat=="magicien" or player2.cat=="voleur" or player2.cat=="elfe"):
Test = True
else:
print("Cette catégorie de personnage n'existe pas !")
'''Combat :'''
Main_Combat()