Résolue

Problème de saut de tour avec l'utilisation de potions

# Booléens # Gestion des erreurs

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 !)

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.