From a406167e1ae8dac53dfdb91b056f1e0021e82e30 Mon Sep 17 00:00:00 2001 From: GUILLAUME Baptiste Date: Wed, 29 Nov 2023 14:58:57 +0100 Subject: [PATCH] =?UTF-8?q?Jeu=20fini=20en=20soi=20mais=20des=20modificati?= =?UTF-8?q?ons=20=C3=A0=20faire=20tel=20que=20pour=20num=5Fjoueur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JDR_SQL.py | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 JDR_SQL.py diff --git a/JDR_SQL.py b/JDR_SQL.py new file mode 100644 index 0000000..96ac268 --- /dev/null +++ b/JDR_SQL.py @@ -0,0 +1,186 @@ +from random import randint +import sqlite3 +import time + +#Création de la table Personnage +conn = sqlite3.connect('JeuDeRole.db') +c = conn.cursor() +c.execute('''CREATE TABLE if not exists Perso(num_joueur INT, nom TEXT, pdv INT, exp INT, categorie TEXT)''') +conn.commit() + +class Personnage: + def __init__(self, nom, cat): + self.nom = nom + self.pdv = 20 + self.exp = 1 + self.cat = cat + if self.cat == "guerrier": + self.inv = ["épée", "potion"] + elif self.cat == "magicien": + self.inv = ["bâton", "potion"] + elif self.cat == "voleur": + self.inv = ["dague", "potion"] + elif self.cat == "elfe": + self.inv = ["arc", "potion"] + + def jet_attaque(self): + attaque = randint(1,20) + if self.cat == "guerrier": + attaque = attaque + self.exp*10 + elif self.cat == "mage": + attaque = attaque + self.exp*10 + elif self.cat == "voleur": + attaque = attaque + self.exp*3 + elif self.cat == "elfe": + attaque = attaque + self.exp*8 + return attaque + + def jet_defense(self): + defense = randint(1,20) + if self.cat == "guerrier": + defense = defense + self.exp*10 + elif self.cat == "mage": + defense = defense + self.exp*10 + elif self.cat == "voleur": + defense = defense + self.exp*3 + elif self.cat == "elfe": + defense = defense + self.exp*8 + return defense + + def change_pdv(self, nb_pdv): + self.pdv += nb_pdv + + def change_exp(self, nb_exp): + self.exp += nb_exp + + def affiche_caracteristiques(self): #Permet d'afficher les caracteristiques de votre personnage + print(" ") + print("Le nom de votre personnage est:", self.nom,".") + print("Votre personnage est un(e):", self.cat,".") + if self.pdv < 0: + print("Votre personnage possède 0 points de vie.") + else: + print("Votre personnage possède", self.pdv, "points de vie.") + print("Votre personnage possède", self.exp, "d'experience.") + + def affiche_inventaire(self): #Permet d'afficher l'inventaire du personnage + print("Inventaire de votre personnage:", self.inv) + + +nomP1 = input("Joueur 1, quel est votre nom ?: ") +nomP2 = input("Joueur 2, quel est votre nom ?: ") +catP1 = input("Joueur 1, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") +while not catP1 in ["guerrier", "mage", "voleur","elfe"]: + catP1 = input("Joueur 1, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") +catP2 = input("Joueur 2, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") +while not catP2 in ["guerrier", "mage", "voleur","elfe"]: + catP2 = input("Joueur 2, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") +P1 = Personnage(nomP1, catP1) +P2 = Personnage(nomP2, catP2) + + +J1 = (1, nomP1, 20, 1, catP1) +J2 = (2, nomP2, 20, 1, catP2) +liste = c.execute("SELECT nom FROM Perso") +if nomP1 in liste : + + c.execute("UPDATE Perso SET num_joueur = (?), nom = (?), pdv = (?), exp = (?), categorie = (?)", J1) + c.execute("UPDATE Perso SET num_joueur = (?), nom = (?), pdv = (?), exp = (?), categorie = (?)", J2) +else: + c.execute("INSERT INTO Perso VALUES (?, ?, ?, ?, ?)", J1) + c.execute("INSERT INTO Perso VALUES (?, ?, ?, ?, ?)", J2) +conn.commit() + +print("-----------------------------") +while P1.pdv > 0 and P2.pdv > 0: + print("---Phase 1 du tour (", nomP1,"attaque)---") + atkP1 = P1.jet_attaque() + defP2 = P2.jet_defense() + if atkP1 > defP2: + perte_pdv = -randint(1,8) + print(nomP1, "attaque", nomP2, "!!!", nomP2,"vient de perdre", -perte_pdv, "point(s) de vie.") + P2.change_pdv(perte_pdv) + if P2.pdv > 0: + pdv2 = (P2.pdv) + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) + conn.commit() + else: + pdv2 = 0 + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) + conn.commit() + else: + perte_pdv = -randint(1,4) + print(nomP2, "arrive à se défendre de l'attaque de", nomP1,"!!!", nomP1,"vient de perdre", -perte_pdv, "point(s) de vie.") + P1.change_pdv(perte_pdv) + if P1.pdv > 0: + pdv1 = (P1.pdv) + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) + conn.commit() + else: + pdv1 = 0 + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) + conn.commit() + P1.affiche_caracteristiques() + P2.affiche_caracteristiques() + print("") + if P1.pdv > 0 and P2.pdv <= 0: + P1.change_exp(1) + print("Le joueur", nomP1, "a gagné.") + valeur = 0 + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (valeur,)) + conn.commit() + break + elif P1.pdv <= 0 and P2.pdv > 0: + P2.change_exp(1) + print("Le joueur", nomP2, "a gagné.") + break + + + print("-----------------------------") + if P1.pdv > 0 and P2.pdv > 0: + input("~~~Veuillez appuyer sur Entrée~~~") + print(" ") + + + print("---Phase 2 du tour (", nomP2,"attaque)---") + defP1 = P1.jet_defense() + atkP2 = P2.jet_attaque() + if atkP2 > defP1: + perte_pdv = -randint(1,8) + print(nomP2, "attaque", nomP1, "!!!", nomP1,"vient de perdre", -perte_pdv, "point(s) de vie.") + P1.change_pdv(perte_pdv) + if P1.pdv > 0: + pdv1 = (P1.pdv) + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) + conn.commit() + else: + pdv1 = 0 + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) + conn.commit() + else: + perte_pdv = -randint(1,4) + print(nomP1, "arrive à se défendre de l'attaque de", nomP2, "!!!", nomP2,"vient de perdre", -perte_pdv, "point(s) de vie.") + P2.change_pdv(perte_pdv) + if P2.pdv > 0: + pdv2 = (P2.pdv) + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) + conn.commit() + else: + pdv2 = 0 + c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) + conn.commit() + P1.affiche_caracteristiques() + P2.affiche_caracteristiques() + if P1.pdv > 0 and P2.pdv <= 0: + P1.change_exp(1) + print("Le joueur", nomP1, "a gagné.") + elif P1.pdv <= 0 and P2.pdv > 0: + P2.change_exp(1) + print("Le joueur", nomP2, "a gagné.") + + print("-----------------------------") + if P1.pdv > 0 and P2.pdv > 0: + input("~~~Veuillez appuyer sur Entrée~~~") + print(" ") + +conn.close() \ No newline at end of file