Contrôle de script
Bonjour,
J'ai rencontré un problème avec le script du jeu dans le terminal. Tout semble fonctionner mais lorsque je sélectionne l'option 1 je n'ai pas en retour le print de ce que j'ai infligé à l'ennemi comme dégats. Il a toujours le même nombre de point qu'au départ et pourtant lui il m'en inflige.
J'ai vérifié le script plusieurs fois sous plusieurs environnements (Visual studio, Pycharm, Idle) j'ai toujours le même résultat.
je vais mettre ici mon code et vous allez vérifier et me dire ce que j'ai mal inscrit.
# jeu sur le terminal
import random
ENEMY_HEALTH = 50
PLAYER_HEALTH = 50
NUMBER_OF_POTIONS = 3
SKIP_TURN = False
# Boucle principale
while True:
if SKIP_TURN:
print("Vous passez votre tour...")
SKIP_TURN = False
else:
user_choice =""
while user_choice not in ["1", "2"]:
user_choice = input("Souhaitez-vous attaquer (1) ou utiliser une potion(2)?: ")
if user_choice == ["1"]:
your_attack = random.randint(5, 10)
ENEMY_HEALTH -= your_attack
print(f"Vous avez infligé {your_attack} points de dégat à l'énemi ⚔️")
elif user_choice == ["2"]: #Potion
if NUMBER_OF_POTIONS > 0:
potion_health = random.randint(5, 50)
PLAYER_HEALTH += potion_health
NUMBER_OF_POTIONS -= 1
SKIP_TURN = True
print(f"Vous avez recupéré {potion_health} points de vie ❤️ ({NUMBER_OF_POTIONS}🧪 restantes)")
else:
print("Vous n'avez plus de potion...")
continue
if ENEMY_HEALTH <= 0:
print("Vous avez gagné 🎉👌💪")
break
enemy_attack = random.randint(5, 15)
PLAYER_HEALTH -= enemy_attack
print(f"L'énemi vous a infligé {enemy_attack} points de dégat ⚔️")
if PLAYER_HEALTH <= 0:
print("Tu as perdu ")
print(f"Il vous reste {PLAYER_HEALTH} points de vie.")
print(f"Il reste {ENEMY_HEALTH} points de vie à l'énemi.")
print("-" * 50)
print("Fin du jeu")
Bonjour Daniel
Le problème vient des structures conditionnelles, tu testes si le choix utilisateur est une liste ["1"]
Alors que tu devrais tester une chaine de caractère uniquement
if user_choice == "1"
et
if user_choice == "2"
Voilà j'espère que cela t'aidera
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte