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. 8
      main.py
  5. 47
      personnage.py

34
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 affiche_inventaire(self,nom):
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_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

10
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"]:

BIN
jdr_base.db

Binary file not shown.

8
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"""
@ -59,9 +59,11 @@ def main():
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)

47
personnage.py

@ -3,15 +3,11 @@ 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",
@ -19,8 +15,8 @@ class Personnage:
"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 + self.exp * self.classe
self.classe = self.switcher_classe.get(self.get_cat())
return + 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 + self.exp * self.classe
self.classe = self.switcher_classe.get(self.get_cat())
return + 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)
print("inventaire : ", self.base.affiche_inventaire(self.nom))
Loading…
Cancel
Save