diff --git a/jeu_role_LJO_5.3_sql.py b/jeu_role_LJO_5.3_sql.py index e5ec73e..c17168c 100644 --- a/jeu_role_LJO_5.3_sql.py +++ b/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()