You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.0 KiB
73 lines
3.0 KiB
# coding=utf-8
|
|
import sqlite3
|
|
|
|
class BaseDeDonnee:
|
|
"""classe pour dialoguer avec une base de donnée"""
|
|
def __init__(self, nom):
|
|
"""initialisation de la base de donnée
|
|
-- si pb malgré création nouvelle table
|
|
supprimer manuellemnt l'ancienne table"""
|
|
self.nom = nom
|
|
|
|
self.con = sqlite3.connect("jdr_base.db")
|
|
self.cur = self.con.cursor()
|
|
|
|
self.cur.execute("CREATE TABLE IF NOT EXISTS "+self.nom+" (nom VARCHAR(40) PRIMARY KEY,categorie VARCHAR(40),pdv INTEGER,exp INTEGER,inventaire VARCHAR(20))")
|
|
self.con.commit()
|
|
|
|
def __str__(self):
|
|
"""pour pouvoir débuguer"""
|
|
res = self.cur.execute("SELECT * FROM "+self.nom).fetchall()
|
|
return str(res)
|
|
|
|
def __del__(self):
|
|
"""déconnection de la base de donnée"""
|
|
self.con.close()
|
|
|
|
def del_data(self):
|
|
"""suppression de toutes les données de la table"""
|
|
self.cur.execute(" DELETE FROM "+self.nom)
|
|
self.con.commit()
|
|
|
|
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_perso in liste_nom:
|
|
raise NameError
|
|
if len(nom_perso) > 40:
|
|
raise ValueError
|
|
else:
|
|
values = (nom_perso,categorie,pdv,exp,inventaire)
|
|
self.cur.execute("INSERT INTO "+self.nom+" VALUES(?,?,?,?,?)",values)
|
|
self.con.commit()
|
|
|
|
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_perso))
|
|
self.con.commit()
|
|
|
|
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_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_perso):
|
|
"""renvoie l'inventaire d'un perso"""
|
|
inventaire_str = self.cur.execute("SELECT inventaire FROM "+self.nom+" WHERE nom=?",(nom_perso,)).fetchone()[0]
|
|
inventaire_lst = inventaire_str.split(",")
|
|
return inventaire_lst
|