From c2c74a23e9e1b47a246f8d713542d8757d944a15 Mon Sep 17 00:00:00 2001 From: "bollet.c" <> Date: Sun, 3 Dec 2023 16:35:41 +0100 Subject: [PATCH] ajustements classe BaseDeDonnee et Personnage + correction de bugs divers --- base_de_donnee.py | 34 ++++++++++++++++++---------- interface.py | 10 +++++++-- jdr_base.db | Bin 20480 -> 20480 bytes main.py | 10 +++++---- personnage.py | 55 +++++++++++++++++++++++++++------------------- 5 files changed, 70 insertions(+), 39 deletions(-) diff --git a/base_de_donnee.py b/base_de_donnee.py index c7ada7d..5b40c06 100644 --- a/base_de_donnee.py +++ b/base_de_donnee.py @@ -3,7 +3,7 @@ import sqlite3 class BaseDeDonnee: """classe pour dialoguer avec une base de donnée""" - def __init__(self, nom, force=0): + def __init__(self, nom): """initialisation de la base de donnée -- si pb malgré création nouvelle table supprimer manuellemnt l'ancienne table""" @@ -24,33 +24,45 @@ class BaseDeDonnee: """déconnection de la base de donnée""" self.con.close() - def ajout_personnage(self,nom,categorie,pdv,exp, inventaire): + def ajout_personnage(self,nom_perso,categorie,pdv,exp, inventaire): """ajoute un personnage dans la base de donnée - caractéristiques : son nom, sa catégorie, son nombre initial de point de vie et d'expérience""" liste_nom = self.cur.execute("SELECT nom FROM "+self.nom).fetchall() liste_nom = [elem[0] for elem in liste_nom] - if nom in liste_nom: + if nom_perso in liste_nom: raise NameError - if nom > 40: + if len(nom_perso) > 40: raise ValueError else: - values = (nom,categorie,pdv,exp,inventaire) + values = (nom_perso,categorie,pdv,exp,inventaire) self.cur.execute("INSERT INTO "+self.nom+" VALUES(?,?,?,?,?)",values) self.con.commit() - def change_pdv_sql(self,nom, n): + def change_pdv(self, nom_perso, n): """incrémente de n le nombre de point de vie du perso""" - self.cur.execute("UPDATE "+self.nom+" SET pdv=pdv+? WHERE nom=?",(n,nom)) + self.cur.execute("UPDATE "+self.nom+" SET pdv=pdv+? WHERE nom=?",(n,nom_perso)) self.con.commit() - def change_exp_sql(self,nom, n): + def change_exp(self, nom_perso, n): """incrémente de n le nombre de point d'exp. du perso""" - self.cur.execute("UPDATE "+self.nom+" SET exp=exp+? WHERE nom=?",(n,nom)) + self.cur.execute("UPDATE "+self.nom+" SET exp=exp+? WHERE nom=?",(n,nom_perso)) self.con.commit() + + def get_cat(self, nom_perso): + """renvoie la catégorie d'un personnage""" + return self.cur.execute("SELECT categorie FROM "+self.nom+" WHERE nom=?",(nom_perso,)).fetchone()[0] + + def get_exp(self, nom_perso): + """renvoie le nombre de point d'exp. d'un personnage""" + return self.cur.execute("SELECT exp FROM "+self.nom+" WHERE nom=?",(nom_perso,)).fetchone()[0] + + def get_pdv(self, nom_perso): + """renvoie le nombre de point de vie d'un personnage""" + return self.cur.execute("SELECT pdv FROM "+self.nom+" WHERE nom=?",(nom_perso,)).fetchone()[0] - def affiche_inventaire(self,nom): + def affiche_inventaire(self, nom_perso): """renvoie l'inventaire d'un perso""" - inventaire_str = self.cur.execute("SELECT inventaire FROM "+self.nom+" WHERE nom=?",(nom,)).fetchone()[0] + inventaire_str = self.cur.execute("SELECT inventaire FROM "+self.nom+" WHERE nom=?",(nom_perso,)).fetchone()[0] inventaire_lst = inventaire_str.split(",") return inventaire_lst \ No newline at end of file diff --git a/interface.py b/interface.py index d51a937..74ca105 100644 --- a/interface.py +++ b/interface.py @@ -52,9 +52,12 @@ def intro_longue(): nomJoueur1 = input("\n\n Quel est ton nom ? : ") while nomJoueur1 == "": nomJoueur1 = input("J'aimerais bien savoir à qui je m'adresse ; quel est ton nom ? : ") + while len(nomJoueur1) > 40: + nomJoueur1 = input("Ce nom est un peu long... Propose-moi un autre nom, plus court : ") #42 if nomJoueur1 == "42": - youWon() + youWon("42") + return None cls() #2e partie de l'intro #demander si 2 1ere l. pas superflues @@ -111,9 +114,12 @@ def intro_courte(): retourne le nom et la catégorie du joueur""" nomJoueur1 = input("nom : ") + while len(nomJoueur1) > 40: + nomJoueur1 = input("nom trop long (plus de 40 lettres) ; proposez un autre nom : ") #42 if nomJoueur1 == "42": - youWon() + youWon("42") + return None print("Les catégories sont : \n guerrier => entrez 0 \n magicien => entrez 1 \n voleur => entrez 2 \n elfe => entrez 3.") catJoueur1 = input("catégorie : ") while catJoueur1 not in ["0", "1", "2", "3"]: diff --git a/jdr_base.db b/jdr_base.db index bae901b61c745f3b301f3af5f4c52fc07e77b475..ea5f651ad51db84414db98766694af2fcc45b7bf 100644 GIT binary patch delta 701 zcmZuuO=uHA6yE7384x%MJ3Q__ddhs9@Z`z9o^&~=jbas;nN(W}<&ExyteBXN;J7{AEb<<}n zf*=I>o~-24d?`^87S^s~I1vJ5Q-CUbAe)ffbz|hR3t}iG%gBA?s11W!)NZr(=nPhG z*Opgn%IfmU&6+aG^$gH1T?|O6vWx`XY|@AAbwhV(UF|r`f7eIAdU14%y(;W01aAp& z1pDv;Tu`9`8S;fZCyV49{)k`WtzGvnelkZS`8+~7jcIJDa9?fdnoiA`CXa9FSeMU?m z&rEbJ;1vh;ye0qcDL@7NP0=IHHC_W{nWfaC^ Uj}MqZJ9c~qNeNEHp4-2?KU_=G0RR91 delta 219 zcmZozz}T>Wae}m<9s>gdD-bgSF%uArPSi0L)nm}Jzsbx0gMo?PnStM#|2)3|zrkij z1$RCc{z!(>iH#)!7l3Mk0H|gvm@(Oz|DXgHpD6?XL;i#O3;7%Q6ZswZ<@oON&F3=( zYL(>U%-~{gG?Zp!l$=~BCqJ3b-gxr_xdKK3uyzIpMj#Dx2+L*xg=72^CuqrV0eM_} vuNe3X_?`G(@qgie#y^+;2LCDkwfuX4CZ6MC4QFXIWQ3ab2`ID`sLvY!M5!{E diff --git a/main.py b/main.py index 83ca65a..716366c 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ from random import randint, choice from personnage import Personnage from interface import * -from base_de_donnee import * +from base_de_donnee import BaseDeDonnee def combat(perso1, perso2): """simule un combat jusqu'à ce que les joueurs n'aient plus de vies""" @@ -58,10 +58,12 @@ def main(): (nomJoueur1, catJoueur1) = intro_longue() else: (nomJoueur1, catJoueur1) = intro_courte() - + + table_persos = BaseDeDonnee("persos") + # 2v ne fonctionnent plus -- ajouter nom base - joueur1 = Personnage("base",nomJoueur1, catJoueur1) - joueur2 = Personnage("base","ennemi très méchant", choice(["guerrier","magicien","voleur","elfe"])) + joueur1 = Personnage(table_persos,nomJoueur1, catJoueur1) + joueur2 = Personnage(table_persos,choice(["Gründ","Blorp","Vla'ard","Kupis"]), choice(["guerrier","magicien","voleur","elfe"])) #le combat ! combat(joueur1, joueur2) diff --git a/personnage.py b/personnage.py index 6a58f2b..649cd04 100644 --- a/personnage.py +++ b/personnage.py @@ -3,24 +3,20 @@ from random import randint from base_de_donnee import * class Personnage: - def __init__(self, nom_base, nom, cat): + def __init__(self, base, nom, cat): """initialise le personnage""" - ### à compléter !!! - #nom_base.ajout_personnage(nom,cat,20,1, inventaire) - + self.nom = nom - self.pdv = 20 - self.exp = 1 - self.cat = cat - + self.base = base + self.switcher_obj = { "guerrier" : "épée", "magicien" : "bâton", "voleur" : "dague", "elfe" : "arc", } - self.inventaire = [self.switcher_obj.get(self.cat)] - self.inventaire.append("potion") + + base.ajout_personnage(nom,cat,20,1, self.switcher_obj.get(cat)+",potion") def jet_attaque(self): """renvoie le jet d'attaque""" @@ -31,8 +27,9 @@ class Personnage: "voleur" : 3, "elfe" : 8, } - self.classe = self.switcher_classe.get(self.cat) - return dé + self.exp * self.classe + + self.classe = self.switcher_classe.get(self.get_cat()) + return dé + self.get_exp() * self.classe def jet_defense(self): """renvoie le jet de défense""" @@ -43,24 +40,38 @@ class Personnage: "voleur" : 3, "elfe" : 8, } - self.classe = self.switcher_classe.get(self.cat) - return dé + self.exp * self.classe + self.classe = self.switcher_classe.get(self.get_cat()) + return dé + self.get_exp() * self.classe def change_pdv(self, nb_pdv): """change le total de points de vie""" - self.pdv += nb_pdv - + self.base.change_pdv(self.nom, nb_pdv) + def change_exp(self, nb_exp): """change le nombre de points d'experience""" - self.exp += nb_exp - + self.base.change_exp(self.nom, nb_exp) + + def get_pdv(self): + """renvoie le nombre de point de vie du personnage""" + return self.base.get_pdv(self.nom) + + def get_exp(self): + """renvoie le nombre de point d'exp. du personnage""" + return self.base.get_exp(self.nom) + + def get_cat(self): + """renvoie la catégorie du personnage""" + return self.base.get_cat(self.nom) + + def affiche_caracteristiques(self): """affiche les caractéristiques du personnage""" print("nom : ", self.nom) - print("catégorie : ", self.cat) - print("points de vie : ", self.pdv) - print("expérience : ", self.exp) + print("catégorie : ", self.get_cat()) + print("points de vie : ", self.get_pdv()) + print("expérience : ", self.get_exp()) print("") + def affiche_inventaire(self): """affiche l'inventaire du personnage""" - print("inventaire : ", self.inventaire) \ No newline at end of file + print("inventaire : ", self.base.affiche_inventaire(self.nom)) \ No newline at end of file