Problème de saut de tour avec l'utilisation de potions
Bonjour
j'ai traité la consigne "le fait que le joueur passait son tour lorsqu'il utilisait une potion." avec le booleen vient_de_prendre_une_potion.
Ce booleen est passé à True si on prend une potion et bloque l'attaque juste après.
Il est repassé à False dès qu'on passe son tour. On pourra ensuite attaquer au prochain tour.
Votre modification ajoutée à ce que j'avais fait entraine deux sauts de tour.
Qu'en pensez-vous ?
cordialement
LG
Bonjour
Effectivement après réexamen du code je me rends compte que j''étais passé à coté de cette variable lors que j'ai testé votre code.
Je pense que cela vient du fait qu'elle se déclenche seulement lorsque le joueur attaque à l'issue d'une prise de potion.
Si je prends les trois potions à la suite voici ce qu'il se passe:
Vous = 50 Ennemi = 50
Souhaitez attaquer (1) ou prendre un potion (2) ?: 2
Vous récupérez 41 points de vie (2 potions restantes)
L'ennemi vous a infligé 8 points de dégats
Il vous reste 83 points de vie
Il reste 50 points de vie à l'ennemi
Vous = 83 Ennemi = 50
Souhaitez attaquer (1) ou prendre un potion (2) ?: 2
Vous récupérez 22 points de vie (1 potions restantes)
L'ennemi vous a infligé 7 points de dégats
Il vous reste 98 points de vie
Il reste 50 points de vie à l'ennemi
Vous = 98 Ennemi = 50
Souhaitez attaquer (1) ou prendre un potion (2) ?: 2
Vous récupérez 36 points de vie (0 potions restantes)
L'ennemi vous a infligé 6 points de dégats
Il vous reste 128 points de vie
Il reste 50 points de vie à l'ennemi
Vous = 128 Ennemi = 50
Souhaitez attaquer (1) ou prendre un potion (2) ?: 1
Vous passez votre tour car vous venez de prendre une potion
L'ennemi vous a infligé 8 points de dégats
Il vous reste 120 points de vie
Il reste 50 points de vie à l'ennemi
Vous = 120 Ennemi = 50
Souhaitez attaquer (1) ou prendre un potion (2) ?:
Ce qui fait que le joueur ne passe pas un tour après chaque potion mais seulement lorsqu'il décide d'attaquer à nouveau
Pour que le code fonctionne bien selon les consignes initiales voici une nouvelle correction:
import sys
from random import randint
def lancement_jeu_de_role():
pts_vie_ennemi = 50
pts_de_vie_user = 50
nb_potion = 3
while True:
print('#' * 100)
print(f"Vous = {pts_de_vie_user} Ennemi = {pts_vie_ennemi}")
reponse = input("Souhaitez attaquer (1) ou prendre un potion (2) ?: ")
if reponse not in ['1', '2']:
continue
else:
if reponse == '1':
user_attaque = randint(5, 10)
print(f"Vous avez infligé {user_attaque} points de dégats à l'ennemi")
pts_vie_ennemi -= user_attaque
if pts_vie_ennemi <= 0:
print("L'ennemi a perdu")
print(f"Vous = {pts_de_vie_user} Ennemi = {pts_vie_ennemi}")
sys.exit()
else:
if nb_potion >= 1:
nb_potion -= 1
gain_potion = randint(15, 50)
print(f"Vous récupérez {gain_potion} points de vie ({nb_potion} potions restantes)")
pts_de_vie_user += gain_potion
else:
print("Il ne vous reste plus de potions")
continue
ennemi_attaque = randint(5, 15)
print(f"L'ennemi vous a infligé {ennemi_attaque} points de dégats")
pts_de_vie_user -= ennemi_attaque
if pts_de_vie_user <= 0:
print("Vous avez perdu")
print(f"Vous = {pts_de_vie_user} Ennemi = {pts_vie_ennemi}")
sys.exit()
print(f"Il vous reste {pts_de_vie_user} points de vie")
print(f"Il reste {pts_vie_ennemi} points de vie à l'ennemi")
if __name__ == '__main__':
lancement_jeu_de_role()
Désolé pour cet oubli de ma correction ;)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte