Locks
2 years ago
commit
43a4d969b9
1 changed files with 149 additions and 0 deletions
@ -0,0 +1,149 @@ |
|||||
|
# -*- 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() |
Loading…
Reference in new issue