Résolue

Contrôle de script

# PyCharm # Scripting

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

Salut,


tout à fait d'accord avec la réponse de Romuald. Fais ces corrections et dis nous ce que ça donne. N'hésites pas à mettre un like à la réponse de Romuald si sa réponse t'a aidé =D

Bonjour,


Merci Romuald, ça m'a vraiment aidé et j'ai pu voir comment ça marche. Merci également à toi Pacdev.👍

cool pas de souci merci à toi pour ton retour.

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.