# 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 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