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")