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