From b87ac94d341158dea21436db75533e6081dba7cb Mon Sep 17 00:00:00 2001 From: Kalyax Date: Thu, 24 Nov 2022 15:45:13 +0100 Subject: [PATCH] connection redo --- game/personnage.py | 97 ++++++++++++++++++++++++++------------------- jeu.db | Bin 0 -> 12288 bytes main.py | 13 ++++++ util/sqlite.py | 12 ++++++ 4 files changed, 82 insertions(+), 40 deletions(-) create mode 100644 jeu.db create mode 100644 util/sqlite.py diff --git a/game/personnage.py b/game/personnage.py index 738526f..63aa8e1 100644 --- a/game/personnage.py +++ b/game/personnage.py @@ -1,11 +1,7 @@ from random import randint from graphics.layers import Sprite -class Category: - def __init__(self, nom, __expcoef, inventaire): - self.nom = nom - self.pdv = __expcoef - self.inventaire = inventaire +import util.sqlite as sqlite class Material: POTION = "POTION" @@ -16,57 +12,78 @@ class Material: class Personnage: def __init__(self, nom, cat, personnage_type): - self.nom = nom - self.__pdv = 20 - self.__exp = 1 - self.cat = cat + #self.nom = nom + #self.__pdv = 20 + #self.__exp = 1 + #self.cat = cat + expcoef = None if cat == "Guerrier": - self.inventaire = [Material.EPEE, Material.POTION] - self.__expcoef = 10 + #self.inventaire = [Material.EPEE, Material.POTION] + expcoef = 10 elif cat == "Magicien": - self.inventaire = [Material.BATON, Material.POTION] - self.__expcoef = 10 + #self.inventaire = [Material.BATON, Material.POTION] + expcoef = 10 elif cat == "Voleur": - self.inventaire = [Material.DAGUE, Material.POTION] - self.__expcoef = 3 + #self.inventaire = [Material.DAGUE, Material.POTION] + expcoef = 3 elif cat == "Elfe": - self.inventaire = [Material.ARC, Material.POTION] - self.__expcoef = 8 + #self.inventaire = [Material.ARC, Material.POTION] + expcoef = 8 + + sqlite.db.execute( + """INSERT INTO personnages (nom, pdv, exp, cat, expcoef) VALUES (?, ?, ?, ?, ?);""", + (nom, 20, 1, cat, expcoef) + ) + sqlite.db.execute("SELECT last_insert_rowid();") + self._id = sqlite.db.fetchone()[0] Sprite(3, cat, personnage_type) + def __select_value(self, value): + sqlite.db.execute("SELECT ? FROM personnages WHERE id=?", (value, self._id)) + return sqlite.db.fetchone() + + def get_nom(self): + return self.__select_value("nom") + def get_pdv(self): + return self.__select_value("pdv") + def get_exp(self): + return self.__select_value("exp") + def get_cat(self): + return self.__select_value("cat") + def get_expcoef(self): + return self.__select_value("expcoef") + + def set_nom(self, v): + Connection.db.execute(f"UPDATE personnages SET nom=? WHERE id={self.id}", v) + def change_pdv(self, v): + Connection.db.execute(f"UPDATE personnages SET pdv = CASE WHEN pdv - {v} < 0 THEN 0 ELSE {v} END WHERE id={self.id}") + def change_exp(self, v): + if v > 0: + Connection.db.execute(f"UPDATE personnages SET exp=exp+? WHERE id={self.id}", v) + else: + raise ValueError("v attends un nombre positif") + def set_cat(self, v): + Connection.db.execute(f"UPDATE personnages SET cat=? WHERE id={self.id}", v) + def set_expcoef(self, v): + Connection.db.execute(f"UPDATE personnages SET expcoef=? WHERE id={self.id}", v) + def jet_attaque(self): damage = randint(1, 20) - self.change_exp(self.__expcoef * self.__exp) + self.change_exp(self.get_expcoef() * self.get_exp()) return damage def jet_defense(self): damage = randint(1, 20) - self.change_exp(self.__expcoef * self.__exp) + self.change_exp(self.get_expcoef() * self.get_exp()) return damage - - def get_pdv(self): - return self.__pdv - def change_pdv(self, nb_pdv): - if self.__pdv - nb_pdv < 0: - self.__pdv = 0 - else: - self.__pdv -= nb_pdv - - def get_xp(self): - return self.__exp - def change_exp(self, nb_exp): - if nb_exp > 0: - self.__exp += nb_exp - else: - raise ValueError("nb_exp attends un nombre positif") def affiche_caracteristiques(self): - return (f"Nom: {self.nom}", - f"Type de classe: {self.cat}", - f"Vie: {self.__pdv}", - f"Expérience: {self.__exp}", - f"XPCOEF: {self.__expcoef}" + return (f"Nom: {self.get_nom()}", + f"Type de classe: {self.get_cat()}", + f"Vie: {self.get_pdv()}", + f"Expérience: {self.get_exp()}", + f"XPCOEF: {self.get_expcoef()}" ) def affiche_inventaire(self): diff --git a/jeu.db b/jeu.db new file mode 100644 index 0000000000000000000000000000000000000000..6f2aafc0b77272595fd0afa2242a7a58ec5200ad GIT binary patch literal 12288 zcmeI#%}T>S5C`zxR#Xc8xb-FjxinD3D4sRefWa6wMj@vV+pPrJq&87{79XUq;$!$G z9^DO8QV?^m|A9?1%x07QC6~Fob>dvmIGsF;t|=dPxiUx`nDhRjJ~1Mjb~q(UO<;t&|jOK zq*Hn@y}^a)^$rhoa<6@I?;U4-)@<}zEc$y@EM|XHhqC3aeu7+Mn2Pb*IzKO}AJ?|K zw#HeUjKm^)p2%)Kj9&7z$itFFXp|Dw*YB!7s;LegbwEG>0uX=z1Rwwb2tWV=5P$## mAh4+d4Ye`!|C{=Gu`dWf00Izz00bZa0SG_<0uX>eA@B{^E@WW< literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 24b582e..fd84627 100644 --- a/main.py +++ b/main.py @@ -5,9 +5,22 @@ import graphics.layers as layers from graphics.engine import Screen import graphics.key_listener as listener +import util.sqlite as sqlite + from time import sleep if __name__ == "__main__": + sqlite.build_thread().start() + sqlite.db.execute( + """CREATE TABLE IF NOT EXISTS personnages ( + id INT IDENTITY(1,1) PRIMARY KEY, + nom VARCHAR(20) NOT NULL, + pdv INT NOT NULL, + exp INT NOT NULL, + cat VARCHAR(20) NOT NULL, + expcoef INT NOT NULL + )""") + #Initialise la partie graphique game = Game() screen = Screen(game) diff --git a/util/sqlite.py b/util/sqlite.py new file mode 100644 index 0000000..88d011b --- /dev/null +++ b/util/sqlite.py @@ -0,0 +1,12 @@ +import sqlite3 +from threading import Thread + +conn = None +db = None + +def __listener(): + conn = sqlite3.connect("jeu.db") + db = conn.cursor() + +def build_thread(): + return Thread(target=__listener)