Browse Source

note

master
manu D 2 years ago
parent
commit
48d65dd2af
  1. 73
      jeu_role_LJO_5.3_sql.py

73
jeu_role_LJO_5.3_sql.py

@ -1,4 +1,11 @@
# -*- coding: utf-8 -*-
"""
Cahier des charges respecté, sans ajout personnel.
Pas de gestion d'un joueur qui existerait déjà.
Code propre et fonctionnel.
Note : 9 / 10
"""
"""
Éditeur : Loïc J-O
Version 5.2
@ -18,7 +25,7 @@ import sqlite3
class Personnage:
def __init__ (self, nom, cat):
'''Initialisation de la class "Personnage" ayant comme attribus:
nom, hp (pdv, points de vie), xp (exp), cat, inventaire
@ -31,12 +38,12 @@ class Personnage:
(Dans cette version du jeu, 'ident' n'est utile que pour différentier 2 joueurs
du même nom et de même catégorie des fois qu'on tombe sur un petit malin :-) )
'''
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" :
@ -45,15 +52,15 @@ class Personnage:
self.inventaire = "dague, potion"
elif self.cat == "elfe" :
self.inventaire = "arc, potion"
'''On met à jour la DB avec les infos du personnage et on récupère son identification DB :'''
c_myDB.execute("INSERT INTO Personnages (nom, cat, xp, hp, inventaire) VALUES (?,?,?,?,?);", (self.nom, self.cat, self.xp, self.hp, self.inventaire))
conn.commit()
c_myDB.execute("SELECT last_insert_rowid();")
self.ident = c_myDB.fetchone()[0]
def jet_attaque (self):
'''Renvoie le jet d'attaque.'''
if self.cat == "guerrier" or self.cat == "magicien":
@ -63,7 +70,7 @@ class Personnage:
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":
@ -75,43 +82,43 @@ class Personnage:
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
c_myDB.execute("UPDATE personnages SET hp=? WHERE ident=?;", (self.hp, self.ident))
conn.commit()
def change_xp (self, nb_xp):
self.xp = self.xp + nb_xp
c_myDB.execute("UPDATE personnages SET xp=? WHERE ident=?;", (self.xp, self.ident))
conn.commit()
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
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.
Mise à jour de la DB au fur et à mesure que la partie avance
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 changer d'attaquant entre deux coups :
dans le code, si i est impaire, player 1 attaque, si i est paire, player 2 attaque.
'''
print("**********************************")
i=1
while player1.hp > 0 and player2.hp > 0:
if i % 2 != 0 :
''' i impair : attaque de player 1 '''
@ -122,8 +129,8 @@ def Main_Combat ():
player1.change_hp(- random.randint(1, 4))
print(player1.nom, " perd son attaque, ", player1.nom," perd des points !")
else :
else :
''' i pair => attaque de player 2'''
if player2.jet_attaque() > player1.jet_defense() :
player1.change_hp(- random.randint(1, 8))
@ -133,40 +140,40 @@ def Main_Combat ():
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("**********************************")
'''Rejouer :'''
rejouer()
def rejouer():
print("ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ")
print("Vous pouvez rejouer, vos combattants seront remis à leur état de vie initiale, mais garderont l'expérience gagnée")
replayQuestion = input("Voulez-vous rejouer ? (oui ou non)")
print("ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ")
if replayQuestion == 'oui':
player1.hp = 20
player2.hp = 20
Main_Combat()
elif replayQuestion == 'non':
print('Bonne journée')
@ -201,8 +208,8 @@ while (Test==False):
Test = True
else:
print("Cette catégorie de personnage n'existe pas !")
''' *** 3. Fonction Combat (qui intègre les échanges avec la DB) : *** '''
Main_Combat()

Loading…
Cancel
Save