Browse Source

ajustements classe BaseDeDonnee et Personnage + correction de bugs divers

master
bollet.c 12 months ago
parent
commit
c2c74a23e9
  1. 34
      base_de_donnee.py
  2. 10
      interface.py
  3. BIN
      jdr_base.db
  4. 10
      main.py
  5. 55
      personnage.py

34
base_de_donnee.py

@ -3,7 +3,7 @@ import sqlite3
class BaseDeDonnee: class BaseDeDonnee:
"""classe pour dialoguer avec une base de donnée""" """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 """initialisation de la base de donnée
-- si pb malgré création nouvelle table -- si pb malgré création nouvelle table
supprimer manuellemnt l'ancienne table""" supprimer manuellemnt l'ancienne table"""
@ -24,33 +24,45 @@ class BaseDeDonnee:
"""déconnection de la base de donnée""" """déconnection de la base de donnée"""
self.con.close() 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 """ajoute un personnage dans la base de donnée
- caractéristiques : son nom, sa catégorie, - caractéristiques : son nom, sa catégorie,
son nombre initial de point de vie et d'expérience""" son nombre initial de point de vie et d'expérience"""
liste_nom = self.cur.execute("SELECT nom FROM "+self.nom).fetchall() liste_nom = self.cur.execute("SELECT nom FROM "+self.nom).fetchall()
liste_nom = [elem[0] for elem in liste_nom] liste_nom = [elem[0] for elem in liste_nom]
if nom in liste_nom: if nom_perso in liste_nom:
raise NameError raise NameError
if nom > 40: if len(nom_perso) > 40:
raise ValueError raise ValueError
else: else:
values = (nom,categorie,pdv,exp,inventaire) values = (nom_perso,categorie,pdv,exp,inventaire)
self.cur.execute("INSERT INTO "+self.nom+" VALUES(?,?,?,?,?)",values) self.cur.execute("INSERT INTO "+self.nom+" VALUES(?,?,?,?,?)",values)
self.con.commit() 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""" """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() 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""" """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() 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""" """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(",") inventaire_lst = inventaire_str.split(",")
return inventaire_lst return inventaire_lst

10
interface.py

@ -52,9 +52,12 @@ def intro_longue():
nomJoueur1 = input("\n\n Quel est ton nom ? : ") nomJoueur1 = input("\n\n Quel est ton nom ? : ")
while nomJoueur1 == "": while nomJoueur1 == "":
nomJoueur1 = input("J'aimerais bien savoir à qui je m'adresse ; quel est ton nom ? : ") 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 #42
if nomJoueur1 == "42": if nomJoueur1 == "42":
youWon() youWon("42")
return None
cls() cls()
#2e partie de l'intro #2e partie de l'intro
#demander si 2 1ere l. pas superflues #demander si 2 1ere l. pas superflues
@ -111,9 +114,12 @@ def intro_courte():
retourne le nom et la catégorie du joueur""" retourne le nom et la catégorie du joueur"""
nomJoueur1 = input("nom : ") nomJoueur1 = input("nom : ")
while len(nomJoueur1) > 40:
nomJoueur1 = input("nom trop long (plus de 40 lettres) ; proposez un autre nom : ")
#42 #42
if nomJoueur1 == "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.") 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 : ") catJoueur1 = input("catégorie : ")
while catJoueur1 not in ["0", "1", "2", "3"]: while catJoueur1 not in ["0", "1", "2", "3"]:

BIN
jdr_base.db

Binary file not shown.

10
main.py

@ -2,7 +2,7 @@
from random import randint, choice from random import randint, choice
from personnage import Personnage from personnage import Personnage
from interface import * from interface import *
from base_de_donnee import * from base_de_donnee import BaseDeDonnee
def combat(perso1, perso2): def combat(perso1, perso2):
"""simule un combat jusqu'à ce que les joueurs n'aient plus de vies""" """simule un combat jusqu'à ce que les joueurs n'aient plus de vies"""
@ -58,10 +58,12 @@ def main():
(nomJoueur1, catJoueur1) = intro_longue() (nomJoueur1, catJoueur1) = intro_longue()
else: else:
(nomJoueur1, catJoueur1) = intro_courte() (nomJoueur1, catJoueur1) = intro_courte()
table_persos = BaseDeDonnee("persos")
# 2v ne fonctionnent plus -- ajouter nom base # 2v ne fonctionnent plus -- ajouter nom base
joueur1 = Personnage("base",nomJoueur1, catJoueur1) joueur1 = Personnage(table_persos,nomJoueur1, catJoueur1)
joueur2 = Personnage("base","ennemi très méchant", choice(["guerrier","magicien","voleur","elfe"])) joueur2 = Personnage(table_persos,choice(["Gründ","Blorp","Vla'ard","Kupis"]), choice(["guerrier","magicien","voleur","elfe"]))
#le combat ! #le combat !
combat(joueur1, joueur2) combat(joueur1, joueur2)

55
personnage.py

@ -3,24 +3,20 @@ from random import randint
from base_de_donnee import * from base_de_donnee import *
class Personnage: class Personnage:
def __init__(self, nom_base, nom, cat): def __init__(self, base, nom, cat):
"""initialise le personnage""" """initialise le personnage"""
### à compléter !!!
#nom_base.ajout_personnage(nom,cat,20,1, inventaire)
self.nom = nom self.nom = nom
self.pdv = 20 self.base = base
self.exp = 1
self.cat = cat
self.switcher_obj = { self.switcher_obj = {
"guerrier" : "épée", "guerrier" : "épée",
"magicien" : "bâton", "magicien" : "bâton",
"voleur" : "dague", "voleur" : "dague",
"elfe" : "arc", "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): def jet_attaque(self):
"""renvoie le jet d'attaque""" """renvoie le jet d'attaque"""
@ -31,8 +27,9 @@ class Personnage:
"voleur" : 3, "voleur" : 3,
"elfe" : 8, "elfe" : 8,
} }
self.classe = self.switcher_classe.get(self.cat)
return + self.exp * self.classe self.classe = self.switcher_classe.get(self.get_cat())
return + self.get_exp() * self.classe
def jet_defense(self): def jet_defense(self):
"""renvoie le jet de défense""" """renvoie le jet de défense"""
@ -43,24 +40,38 @@ class Personnage:
"voleur" : 3, "voleur" : 3,
"elfe" : 8, "elfe" : 8,
} }
self.classe = self.switcher_classe.get(self.cat) self.classe = self.switcher_classe.get(self.get_cat())
return + self.exp * self.classe return + self.get_exp() * self.classe
def change_pdv(self, nb_pdv): def change_pdv(self, nb_pdv):
"""change le total de points de vie""" """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): def change_exp(self, nb_exp):
"""change le nombre de points d'experience""" """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): def affiche_caracteristiques(self):
"""affiche les caractéristiques du personnage""" """affiche les caractéristiques du personnage"""
print("nom : ", self.nom) print("nom : ", self.nom)
print("catégorie : ", self.cat) print("catégorie : ", self.get_cat())
print("points de vie : ", self.pdv) print("points de vie : ", self.get_pdv())
print("expérience : ", self.exp) print("expérience : ", self.get_exp())
print("") print("")
def affiche_inventaire(self): def affiche_inventaire(self):
"""affiche l'inventaire du personnage""" """affiche l'inventaire du personnage"""
print("inventaire : ", self.inventaire) print("inventaire : ", self.base.affiche_inventaire(self.nom))
Loading…
Cancel
Save