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.
109 lines
4.1 KiB
109 lines
4.1 KiB
|
|
from random import*
|
|
class Personnage:
|
|
def __init__(self, nom, cat,pdv,exp,inventaire):
|
|
self.nom = nom
|
|
self.cat = cat
|
|
self.pdv = 20
|
|
self.exp = 1
|
|
self.inventaire = []
|
|
if self.cat == "Chevalier":
|
|
self.inventaire = ["Epée", "Potion de degat"]
|
|
self.coefAtk = 8
|
|
self.coefDef = 7
|
|
elif self.cat == "Archer":
|
|
self.inventaire = ["Arc en bois", "Potion de vitesse"]
|
|
self.coefAtk = 7
|
|
self.coefDef = 4
|
|
elif self.cat == "Mage":
|
|
self.inventaire = ["Spectre", "Grimoire"]
|
|
self.coefAtk = 5
|
|
self.coefDef = 8
|
|
elif self.cat == "Assasin":
|
|
self.inventaire = ["Dagues", "Potion de camouflage"]
|
|
self.coefAtk = 9
|
|
self.coefDef = 5
|
|
|
|
def table_personnages():
|
|
conn = sqlite3.connect('personnages.db')
|
|
c = conn.cursor()
|
|
|
|
c.execute('''CREATE TABLE IF NOT EXISTS personnages
|
|
(nom TEXT, pdv INTEGER, exp INTEGER, cat TEXT, inventaire TEXT, coefAtk INTEGER, coefDef INTEGER)''')
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
|
|
def ajouter_personnage(personnage):
|
|
conn = sqlite3.connect('personnages.db')
|
|
c = conn.cursor()
|
|
|
|
c.execute("INSERT INTO personnages VALUES (?, ?, ?, ?, ?, ?, ?)",
|
|
(personnages.nom, personnages.pdv, personnages.exp, personnages.cat, personnages.coefAtk, personnages coefDef ', '.join(personnage.inventaire)))
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
|
|
table_personnages()
|
|
|
|
|
|
def jet_attaque(self):
|
|
"""renvoie jet d'attaque"""
|
|
atkPoints = randint(1, 20)
|
|
return atkPoints + self.exp*self.coefAtk*0.1
|
|
|
|
def jet_defense(self):
|
|
"""renvoie jet de défense"""
|
|
defPoints = randint(1, 20)
|
|
return defPoints + self.exp*self.coefDef*0.1
|
|
|
|
def change_pdv(self, nb_pdv):
|
|
"""change le nombre de pdv"""
|
|
self.pdv = self.pdv + nb_pdv
|
|
|
|
def change_exp(self, nb_exp):
|
|
"""change le nombre d'exp"""
|
|
self.exp = self.exp + nb_exp
|
|
|
|
def affiche_caracteristiques(self):
|
|
"""affiche les caractéristiques du personnage (nom, catégorie, pdv, exp)"""
|
|
print("Nom :", self.nom)
|
|
print("Catégorie :", self.cat)
|
|
print("Points de vie :", self.pdv)
|
|
print("Points d'expérience:", self.exp)
|
|
|
|
def affiche_inventaire(self):
|
|
"""affiche le contenu de l'inventaire du personnage"""
|
|
print("L'inventaire de", self.nom, ":",self.inventaire)
|
|
|
|
def combat(Perso1, Perso2):
|
|
"""Lance un combat jusqu'à ce qu'un personnage n'a plus de points de vie puis donne un point d'expérience au vainqueur"""
|
|
roleAtk = Perso1
|
|
roleDef = Perso2
|
|
while Perso1.nombre_pdv() > 0 and Perso2.nombre_pdv() > 0:
|
|
if roleAtk.jet_attaque() > roleDef.jet_defense():
|
|
roleDef.change_pdv(-randint(1, 8))
|
|
elif roleAtk.jet_attaque() < roleDef.jet_defense():
|
|
roleAtk.change_pdv(-randint(1, 4))
|
|
elif roleAtk.jet_attaque() == roleDef.jet_defense():
|
|
roleAtk.change_pdv()
|
|
roleDef.change_pdv()
|
|
Perso1.affiche_caracteristiques()
|
|
Perso2.affiche_caracteristiques()
|
|
roleAtk, roleDef = roleDef, roleAtk
|
|
if Perso1.nombre_pdv() > 0:
|
|
print(Perso2.affiche_nom(), "a perdu, le vainqueur est ",Perso1.affiche_nom(), "qui remporte un point d'expérience !")
|
|
Perso1.change_exp(1)
|
|
elif Perso2.nombre_pdv() > 0:
|
|
print(Perso1.affiche_nom(), "a perdu, le vainqueur est ",Perso2.affiche_nom(), "qui remporte un point d'expérience !")
|
|
Perso2.change_exp(1)
|
|
elif Perso1.nombre_pdv() < 0 and Perso2.nombre_pdv() < 0:
|
|
print("Le jet d'attaque est trop faible pour infliger assez de dégats pour gagner le combat et le jet de défense est trop résistant", Perso1.affiche_nom(), "et", Perso2.affiche_nom(), "ont pas pris de dégats conséquents ! egalité donc recommencer le combat")
|
|
Perso1.regen_pdv()
|
|
Perso2.regen_pdv()
|
|
|
|
|
|
Arkunir = Personnage("Arkunir", "Mage")
|
|
Elon Musk = Personnage("Elon Musk", "Archer")
|
|
|
|
|