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 -*- # -*- 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 Éditeur : Loïc J-O
Version 5.2 Version 5.2
@ -18,7 +25,7 @@ import sqlite3
class Personnage: class Personnage:
def __init__ (self, nom, cat): def __init__ (self, nom, cat):
'''Initialisation de la class "Personnage" ayant comme attribus: '''Initialisation de la class "Personnage" ayant comme attribus:
nom, hp (pdv, points de vie), xp (exp), cat, inventaire 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 (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 :-) ) du même nom et de même catégorie des fois qu'on tombe sur un petit malin :-) )
''' '''
self.nom = nom self.nom = nom
self.hp = 20 self.hp = 20
self.xp = 1 self.xp = 1
self.cat = cat self.cat = cat
if self.cat == "guerrier" : if self.cat == "guerrier" :
self.inventaire = "épée, potion" self.inventaire = "épée, potion"
elif self.cat == "magicien" : elif self.cat == "magicien" :
@ -45,15 +52,15 @@ class Personnage:
self.inventaire = "dague, potion" self.inventaire = "dague, potion"
elif self.cat == "elfe" : elif self.cat == "elfe" :
self.inventaire = "arc, potion" self.inventaire = "arc, potion"
'''On met à jour la DB avec les infos du personnage et on récupère son identification DB :''' '''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)) c_myDB.execute("INSERT INTO Personnages (nom, cat, xp, hp, inventaire) VALUES (?,?,?,?,?);", (self.nom, self.cat, self.xp, self.hp, self.inventaire))
conn.commit() conn.commit()
c_myDB.execute("SELECT last_insert_rowid();") c_myDB.execute("SELECT last_insert_rowid();")
self.ident = c_myDB.fetchone()[0] self.ident = c_myDB.fetchone()[0]
def jet_attaque (self): def jet_attaque (self):
'''Renvoie le jet d'attaque.''' '''Renvoie le jet d'attaque.'''
if self.cat == "guerrier" or self.cat == "magicien": if self.cat == "guerrier" or self.cat == "magicien":
@ -63,7 +70,7 @@ class Personnage:
elif self.cat == "elfe": elif self.cat == "elfe":
coef = 8 coef = 8
return random.randint(1, 20) + self.xp * coef return random.randint(1, 20) + self.xp * coef
def jet_defense (self): def jet_defense (self):
'''Renvoie le jet de défense.''' '''Renvoie le jet de défense.'''
if self.cat == "guerrier": if self.cat == "guerrier":
@ -75,43 +82,43 @@ class Personnage:
elif self.cat == "elfe": elif self.cat == "elfe":
coef = 10 coef = 10
return random.randint(1, 20) + self.xp * coef return random.randint(1, 20) + self.xp * coef
def change_hp (self, nb_hp): def change_hp (self, nb_hp):
self.hp = self.hp + nb_hp self.hp = self.hp + nb_hp
c_myDB.execute("UPDATE personnages SET hp=? WHERE ident=?;", (self.hp, self.ident)) c_myDB.execute("UPDATE personnages SET hp=? WHERE ident=?;", (self.hp, self.ident))
conn.commit() conn.commit()
def change_xp (self, nb_xp): def change_xp (self, nb_xp):
self.xp = self.xp + nb_xp self.xp = self.xp + nb_xp
c_myDB.execute("UPDATE personnages SET xp=? WHERE ident=?;", (self.xp, self.ident)) c_myDB.execute("UPDATE personnages SET xp=? WHERE ident=?;", (self.xp, self.ident))
conn.commit() conn.commit()
def affiche_caracteristiques (self): def affiche_caracteristiques (self):
print("Le Grand", self.nom, " : ", self.cat, ", Points de vie : ", self.hp, ", Expérience : ", self.xp) print("Le Grand", self.nom, " : ", self.cat, ", Points de vie : ", self.hp, ", Expérience : ", self.xp)
def affiche_inventaire (self): def affiche_inventaire (self):
print("Inventaire : ", self.inventaire) print("Inventaire : ", self.inventaire)
def Main_Combat (): 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. 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 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) 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 : 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. dans le code, si i est impaire, player 1 attaque, si i est paire, player 2 attaque.
''' '''
print("**********************************") print("**********************************")
i=1 i=1
while player1.hp > 0 and player2.hp > 0: while player1.hp > 0 and player2.hp > 0:
if i % 2 != 0 : if i % 2 != 0 :
''' i impair : attaque de player 1 ''' ''' i impair : attaque de player 1 '''
@ -122,8 +129,8 @@ def Main_Combat ():
player1.change_hp(- random.randint(1, 4)) player1.change_hp(- random.randint(1, 4))
print(player1.nom, " perd son attaque, ", player1.nom," perd des points !") print(player1.nom, " perd son attaque, ", player1.nom," perd des points !")
else : else :
''' i pair => attaque de player 2''' ''' i pair => attaque de player 2'''
if player2.jet_attaque() > player1.jet_defense() : if player2.jet_attaque() > player1.jet_defense() :
player1.change_hp(- random.randint(1, 8)) 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 !" ) print(player2.nom, " perd son attaque, ", player2.nom," perd des points !" )
i=i+1 i=i+1
print("Bilan des 2 joueurs suite à l'attaque :") print("Bilan des 2 joueurs suite à l'attaque :")
player1.affiche_caracteristiques() player1.affiche_caracteristiques()
player2.affiche_caracteristiques() player2.affiche_caracteristiques()
print("**********************************") print("**********************************")
if player1.hp <= 0: if player1.hp <= 0:
winner = player2.nom winner = player2.nom
player2.change_xp(+1) player2.change_xp(+1)
else : else :
winner = player1.nom winner = player1.nom
player1.change_xp(+1) player1.change_xp(+1)
print("FIN DU COMBAT !!!") print("FIN DU COMBAT !!!")
print("Le gagnant du combat est le Grand ", winner, " en ", i-1, " échange(s)") print("Le gagnant du combat est le Grand ", winner, " en ", i-1, " échange(s)")
player1.affiche_caracteristiques() player1.affiche_caracteristiques()
player2.affiche_caracteristiques() player2.affiche_caracteristiques()
print("**********************************") print("**********************************")
'''Rejouer :''' '''Rejouer :'''
rejouer() rejouer()
def rejouer(): def rejouer():
print("ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ") print("ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ")
print("Vous pouvez rejouer, vos combattants seront remis à leur état de vie initiale, mais garderont l'expérience gagnée") 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)") replayQuestion = input("Voulez-vous rejouer ? (oui ou non)")
print("ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ") print("ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ")
if replayQuestion == 'oui': if replayQuestion == 'oui':
player1.hp = 20 player1.hp = 20
player2.hp = 20 player2.hp = 20
Main_Combat() Main_Combat()
elif replayQuestion == 'non': elif replayQuestion == 'non':
print('Bonne journée') print('Bonne journée')
@ -201,8 +208,8 @@ while (Test==False):
Test = True Test = True
else: else:
print("Cette catégorie de personnage n'existe pas !") print("Cette catégorie de personnage n'existe pas !")
''' *** 3. Fonction Combat (qui intègre les échanges avec la DB) : *** ''' ''' *** 3. Fonction Combat (qui intègre les échanges avec la DB) : *** '''
Main_Combat() Main_Combat()

Loading…
Cancel
Save