Bonjour erreur non comprise
Bonjour je commence tout juste ma formation python depuis une semaine sur mes heures libres et je bute pas mal sur les projets.
sur celui ci je ne comprends pas plusieurs chose :
import random
print ("*** Jeu de rôle***" )
player_hp = 50
orc_hp = 50
potion = 3
while player_hp > 0 and orc_hp >= 0 :
choice = input("Souhaitez vous attaquer (1) ou prendre une potion de soins (2) ? : ")
choice = int(choice)
player_atk = random.randint(5 , 10)
orc_atk = random.randint (5, 15)
if choice == 1 :
print (f"Vous infligez une blessure de {player_atk}⚔️ point de vie, il reste { orc_hp - player_atk} 💓 à votre ennemi !!")
print (f"Votre ennemi riposte, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp - orc_atk} 💓 !!")
print ("-" * 50 )
orc_hp -= player_atk
player_hp -= orc_atk
if orc_hp <= 0 :
break
elif choice == 2 :
if potion <= 0 :
print (" Vous avez utilisé toutes vos potions !")
continue
elif potion > 0 :
heal = random.randint(15 , 50)
print (f" Vous utilisez une potion de soin, vous gagnez {heal} 💓, vous disposez maintenant de {player_hp + heal} 💓il vous reste {potion - 1} potion ")
print (f"Votre ennemi en profite pour vous attaquer, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp - orc_atk + heal} 💓 !!")
print ("-" * 50)
print("Vous passez votre tour")
player_hp = player_hp + heal
orc_atk = random.randint (5, 15)
player_hp -= orc_atk
print (f"Votre ennemi en profite pour vous attaquer à nouveau, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp - orc_atk } 💓 !!")
print ("-" * 50)
potion -= 1
player_hp -= orc_atk
else :
print("La valeur entrée n'est pas possible")
print ("-" * 50 )
#Victoire ou défaite
if player_hp > 0 :
print ( f"Bravo ! Vous avez vaincu votre ennemi, il vous restait {player_hp}💓")
elif player_hp <= 0 :
print ("Vous êtes mort 💀")
print ("Fin de la partie")
elif choice == 2 :
if potion <= 0 :
print (" Vous avez utilisé toutes vos potions !")
continue
elif potion > 0 :
heal = random.randint(15 , 50)
print (f" Vous utilisez une potion de soin, vous gagnez {heal} 💓, vous disposez maintenant de {player_hp + heal} 💓il vous reste {potion - 1} potion{'s' if potion >1 else ''} ")
print (f"Votre ennemi en profite pour vous attaquer, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp - orc_atk + heal} 💓 !!")
print ("-" * 50)
print("Vous passez votre tour")
player_hp = player_hp + heal
orc_atk = random.randint (5, 15)
player_hp -= orc_atk
print (f"Votre ennemi en profite pour vous attaquer à nouveau, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp - orc_atk } 💓 !!")
Lors de la deuxième attaque les sommes ne sont pas bonnes comme ici :
Vous utilisez une potion de soin, vous gagnez 31 💓, vous disposez maintenant de 81 💓il vous reste 2 potions
Votre ennemi en profite pour vous attaquer, il vous inflige 12⚔️ points de dégats il vous reste 69 � !!
--------------------------------------------------
Vous passez votre tour
Votre ennemi en profite pour vous attaquer à nouveau, il vous inflige 10⚔️ points de dégats il vous reste 61 💓 !!
Merci pour votre aide
Bonjour Mehdi,
Effectivement tu as oublié d'enlever le points de l'attaque de l'ennemi à la santé du joueur et en règle général tu fais trop d'opérations directement à l'intérieur des f-string.
Je te conseille grandement de déjà faire tous les calculs nécessaires et ensuite afficher les variables directement dans les f-string. Par exemple pour la potion, tu ajustes le nombre de potions en enlevant 1 et ensuite tu affiches juste la variable potion :
elif choice == 2 :
if potion <= 0 :
print (" Vous avez utilisé toutes vos potions !")
continue
elif potion > 0 :
# On calcule les points de la potion
heal = random.randint(15 , 50)
# On modifie la santé du joueur et le nombre de potions
player_hp += heal
potion -= 1
# On peut ainsi directement afficher les variables sans faire aucun calcul
print (f" Vous utilisez une potion de soin, vous gagnez {heal} 💓, vous disposez maintenant de {player_hp} 💓il vous reste {potion} potion ")
# On réalise l'attaque de l'ennemi
player_hp -= orc_atk
# Pareil : il ne reste plus qu'à indiquer les variables telles quelles
print (f"Votre ennemi en profite pour vous attaquer, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp} 💓 !!")
print ("-" * 50)
print("Vous passez votre tour")
# On refait les calculs pour le tour supplémentaire
orc_atk = random.randint (5, 15)
player_hp -= orc_atk
# Et encore une fois, on affiche directement les variables
print (f"Votre ennemi en profite pour vous attaquer à nouveau, il vous inflige {orc_atk}⚔️ points de dégats il vous reste {player_hp} 💓 !!")
print ("-" * 50)
Est-ce que c'est plus clair comme ça :) ?
Super merci, donc simplifier les f string en ajoutant les calculs de variables en amont.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte