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.
115 lines
3.2 KiB
115 lines
3.2 KiB
import sqlite3
|
|
import random
|
|
|
|
conn = sqlite3.connect('personnages.db')
|
|
cursor = conn.cursor()
|
|
|
|
# Créa de la table des perso
|
|
cursor.execute('''
|
|
CREATE TABLE IF NOT EXISTS personnage (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
nom TEXT,
|
|
pdv INTEGER,
|
|
exp INTEGER,
|
|
cat TEXT,
|
|
inventaire TEXT
|
|
)
|
|
''')
|
|
|
|
# Classe Personnage avec interaction a la BDD
|
|
class Personnage:
|
|
def __init__(self, nom, cat):
|
|
self.nom = nom
|
|
self.pdv = 20
|
|
self.exp = 1
|
|
self.cat = cat
|
|
self.inventaire = []
|
|
|
|
# Ajout du perso a la BDD
|
|
cursor.execute('''
|
|
INSERT INTO personnage (nom, pdv, exp, cat, inventaire)
|
|
VALUES (?, ?, ?, ?, ?)
|
|
''', (self.nom, self.pdv, self.exp, self.cat, ', '.join(self.inventaire)))
|
|
conn.commit()
|
|
|
|
def jet_attaque(self):
|
|
coefficient = 10 # Coeff de base
|
|
if self.cat == "guerrier":
|
|
coefficient = 10
|
|
elif self.cat == "magicien":
|
|
coefficient = 10
|
|
elif self.cat == "voleur":
|
|
coefficient = 3
|
|
elif self.cat == "elfe":
|
|
coefficient = 8
|
|
|
|
return random.randint(1, 20) + self.exp * coefficient
|
|
|
|
def jet_defense(self):
|
|
coefficient = 8 # Coeff de base
|
|
if self.cat == "guerrier":
|
|
coefficient = 8
|
|
elif self.cat == "magicien":
|
|
coefficient = 7
|
|
elif self.cat == "voleur":
|
|
coefficient = 9
|
|
elif self.cat == "elfe":
|
|
coefficient = 10
|
|
|
|
return random.randint(1, 20) + self.exp * coefficient
|
|
|
|
def change_pdv(self, ab_pdv):
|
|
self.pdv += ab_pdv
|
|
cursor.execute('''
|
|
UPDATE personnage
|
|
SET pdv = ?
|
|
WHERE nom = ?
|
|
''', (self.pdv, self.nom))
|
|
conn.commit()
|
|
|
|
def change_exp(self, ab_exp):
|
|
self.exp += ab_exp
|
|
cursor.execute('''
|
|
UPDATE personnage
|
|
SET exp = ?
|
|
WHERE nom = ?
|
|
''', (self.exp, self.nom))
|
|
conn.commit()
|
|
|
|
def affiche_caracteristiques(self):
|
|
cursor.execute('''
|
|
SELECT * FROM personnage
|
|
WHERE nom = ?
|
|
''', (self.nom,))
|
|
result = cursor.fetchone()
|
|
print(f"Nom: {result[1]}")
|
|
print(f"Catégorie: {result[4]}")
|
|
print(f"Points de vie: {result[2]}")
|
|
print(f"Expérience: {result[3]}")
|
|
|
|
def affiche_inventaire(self):
|
|
cursor.execute('''
|
|
SELECT inventaire FROM personnage
|
|
WHERE nom = ?
|
|
''', (self.nom,))
|
|
result = cursor.fetchone()
|
|
print(f"Inventaire de {self.nom}: {result[0]}")
|
|
|
|
# Fermeture de la connexion
|
|
def close_db():
|
|
conn.close()
|
|
|
|
# Creation des perso
|
|
personnage1 = Personnage("legolas", "elfe")
|
|
personnage2 = Personnage("Leonidas", "guerrier")
|
|
|
|
# ... (votre simulation de combat)
|
|
|
|
# Ajout de l'exp au survivant a la fin de combat
|
|
gagnant = personnage1 if personnage1.pdv > 0 else personnage2
|
|
gagnant.change_exp(1)
|
|
|
|
print(f"{gagnant.nom} a gagné le combat et reçoit 1 point d'expérience.")
|
|
|
|
# Fermeture de la BDD
|
|
close_db()
|