#### mini-projet JDR
from random import randint
### les personnages ont 4 capacités
### la Force, l'Agilité, la Magie qui sont déterminées par un 1D20
### Les PV sont déterminés par la somme de ses 3 caractéristiques
### il y a 3 types de personnages : Guerrier, Voleur, Mage
### le type est déterminé par un tirage aléatoire.
def creation_perso(nom):
'''
>>>creation_perso("Gandalf")
{nom:"Gandalf",type:"Guerrier",
"Force": 15 , "Agilité": 9 ,"Magie": 5 ,"PV": 29
}
'''
### pour les combats, on regarde la caractéristique propre à chaque type :guerrier->Force, mage->Magie, voleur -> agilité
### celui qui a la caractéristique propre la plus élevée commence
### en cas d'égalité, on procède à un tirage aléatoire pour déterminer celui qui commence
### les points de dégats infligés sont déterminés par la différence des caractéristiques propres auquel on ajoute un d6, ils sont enlevés aux pv du personnage en défense
### on permute les rôles attaquant et défenseur, on continue jusqu'à ce qu'un des perso ait moins de 0 pv
def combat(perso1,perso2):
'''
>>>combat(perso1,perso2)
"perso1 attaque, il met 5 pts de dégats à perso2"
"perso2 attaque, il met 3 pts de dégats à perso1"
....
"Perso2 a 0 pv, il fuit à grandes enjambées."
'''
Proposition de correction
#### mini-projet JDR
from random import randint
### les personnages ont 4 capacités
### la Force, l'Agilité, la Magie qui sont déterminées par un 1D20
### Les PV sont déterminés par la somme de ses 3 caractéristiques
### il y a 3 types de personnages : Guerrier, Voleur, Mage
### le type est déterminé par un tirage aléatoire.
from random import randint
def creation_perso(nom):
'''
>>>creation_perso("Gandalf")
{nom:"Gandalf",type:"Guerrier",
"Force": 15 , "Agilité": 9 ,"Magie": 5 ,"PV": 29
}
'''
types=('Guerrier','Voleur','Mage')
caracts=('Force','Magie','Agilité')
reponse="non"
while reponse!="ok":
retour={}
retour['nom']=nom
retour['type']=types[randint(0,2)]
retour['pv']=0
for i in range(3):
retour[caracts[i]]=randint(0,20)
retour['pv']+=retour[caracts[i]]
print(retour)
reponse=input("ça vous va "+nom+" ?")
return retour
### pour les combats, on regarde la caractéristique propre à chaque type :guerrier->Force, mage->Magie, voleur -> agilité
### celui qui a la caractéristique propre la plus élevée commence
### en cas d'égalité, on procède à un tirage aléatoire pour déterminer celui qui commence
### les points de dégats infligés sont déterminés par la différence des caractéristiques propres auquel on ajoute un d6, ils sont enlevés aux pv du personnage en défense
### on permute les rôles attaquant et défenseur, on continue jusqu'à ce qu'un des perso ait moins de 0 pv
def caract_principale(perso):
type=perso["type"]
caract_prin={'Guerrier':'Force','Voleur':'Agilité','Mage':'Magie'}
return perso[caract_prin[type]]
def premier(perso1,perso2):
c1=caract_principale(perso1)
c2=caract_principale(perso2)
if c1==c2:
if randint(1,2)==1:
return perso1,perso2
else:
return perso2,perso1
if c1>c2:
return perso1,perso2
return perso2,perso1
perso1={'nom': 'Gandalf', 'type': 'Guerrier', 'pv': 15, 'Force':12, 'Magie': 14, 'Agilité': 9}
perso2={'nom': 'Faenor', 'type': 'Mage', 'pv': 29, 'Force': 6, 'Magie': 19, 'Agilité': 9}
print("Affrontement entre")
print(perso1)
print("et")
print(perso2)
def combat(perso1,perso2):
'''
>>>combat(perso1,perso2)
"perso1 attaque, il met 5 pts de dégats à perso2"
"perso2 attaque, il met 3 pts de dégats à perso1"
....
"Perso2 a 0 pv, il fuit à grandes enjambées."
'''
attaquant,defenseur=premier(perso1,perso2)
while attaquant["pv"]>0 and defenseur["pv"]>0:
degats=caract_principale(attaquant)/(caract_principale(attaquant)+caract_principale(defenseur))
degats=int(degats*randint(1,6))
print(attaquant["nom"]+" inflige "+str(degats)+" pts de dégats à "+defenseur["nom"])
defenseur["pv"]-=degats
print(defenseur["nom"]+ " a "+str(defenseur["pv"])+" pv")
a=input("round suivant")
attaquant,defenseur=defenseur,attaquant
combat(perso1,perso2)