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 bae901b..ea5f651 100644 Binary files a/jdr_base.db and b/jdr_base.db differ 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