Résolue

Avis sur le code

# Boucles # Correction de code # Variables

Bonjour,

Je viens de finir le petit jeu, je n'ai pas encore regarder la correction. J'ai essayé de rendre le code lisible... 😅
ça a l'air de fonctionner, j'ai essayé tous les cas auxquel j'ai pensé mais il est possible que j'en ai oublié certains.
Est-il possible d'avoir un avis sur le code global ?
Merci encore ! 🙂

import random

#Définition des variables globales
player_health = enemy_health = max_health = 50
potion = 3
player_attack = enemy_attack = None
care = None

#Afficher les règles du jeu
print("Vous devez battre votre ennemie, voici les règles du jeux :\n"
      "- Le jeu comporte deux joueurs : vous et un ennemi.\n"
      "- Vous commencez tous les deux avec 50 points de vie ❤️.\n"
      "- Votre personnage dispose de 3 potions 🧪 qui vous permettent de récupérer des points de vie.\n"
      "- L'ennemi ne dispose d'aucune potion.\n"
      "- Chaque potion vous permet de récupérer un nombre aléatoire de points de vie, compris entre 15 et 50.\n"
      "- Votre attaque inflige à l'ennemi des dégâts aléatoires compris entre 5 et 10 points de vie.\n"
      "- L'attaque de l'ennemi vous inflige des dégâts aléatoires compris entre 5 et 15 points de vie.\n"
      "- Lorsque vous utilisez une potion, vous passez le prochain tour.")

#Début de la boucle
while player_health > 0 and enemy_health > 0:
    print("-" * 105)
    player_choice = input("Souhaitez-vous attaquer (1) ou utiliser une potion (2) ? ")

    #Vérifier que le joueur rentre le bon choix
    if player_choice != "1" and player_choice != "2":
        print("Veuillez rentrez un choix valide.")
    else:
        #Attaque
        if player_choice == "1":
            player_attack = random.randint(5, 10)
            enemy_health = enemy_health - player_attack
            enemy_attack = random.randint(5, 15)
            player_health = player_health - enemy_attack
            print(f"Vous avez infliger {player_attack} points de dégats à l'énnemie ⚔️")
            print(f"L'ennemi vous a infligé {enemy_attack} points de dégats ⚔️")

            #On vérifie si les deux joueurs ont plus de 0 de santé
            if player_health > 0 and enemy_health > 0:
                print(f"Il vous reste {player_health} points de vie")
                print(f"Il reste {enemy_health} points de vie à l'ennemie")
        #Soin        
        else:
            if potion > 0:
                care = random.randint(15, 50)
                player_health = player_health + care
                potion -= 1

                #Vérifier on a atteint le maximum en santé
                if player_health >= max_health:
                    player_health = max_health
                    print(f"Votre santé est au maximum ({potion} 🧪 restantes)")
                else:
                    print(f"Vous récupérez {care} points de vie ❤️  ({potion} 🧪 restantes)")

                enemy_attack = random.randint(5, 15)
                player_health = player_health - enemy_attack
                print(f"L'ennemi vous a infligé {enemy_attack} points de dégats ⚔️")

                #On vérifie si le joueur a toujour plus de 0 en santé
                if player_health > 0:
                    print(f"Il vous reste {player_health} points de vie")
                    print(f"Il reste {enemy_health} points de vie à l'ennemie")
                    print("-" * 105)
                    print("Vous avez passer votre tour...")
                    enemy_attack = random.randint(5, 15)
                    player_health = player_health - enemy_attack
                    print(f"L'ennemi vous a infligé {enemy_attack} points de dégats ⚔️")
                    print(f"Il vous reste {player_health} points de vie")
                    print(f"Il reste {enemy_health} points de vie à l'ennemie")
            else:
                print("Vous n'avez plus de potion...")
else:
    if enemy_health <= 0 and player_health <= 0:
        print("Vous avez tous les deux perdu... 💀💀")
    elif enemy_health <= 0:
        print("Bravo ! Vous avez gagné votre combat ! 💪")
    else:
        print("Vous perdu ce combat... 💀")

Thibault houdon

Mentor

Salut Farouk 🖐️

Désolé pour le petit délai, on était tous absents ce week-end !

Déjà, félicitations pour avoir fini le jeu ! Le code que tu as écrit est effectivement très clair et facile à lire, ça fait du bien aux yeux, garde ces habitudes parce que ça fait toute la différence en équipe quand on doit aider un collègue et qu'on voit un code du genre 🤩

  1. Commentaires : C'est super que tu aies mis des commentaires pour expliquer ce que ton code fait. C'est très utile pour les autres développeurs (ou pour toi plus tard).. mais il est également important de ne pas sur-commenter 😄 Par exemple, pas besoin de commentaires pour les print statements évidents. J'ai envie de te dire que c'est mieux au début d'en mettre trop que pas assez, mais garde ça en tête pour la suite ;)

  2. Structure conditionnelle : tu ne vérifies la condition que pour le "1" et tu utilises un else pour gérer le 2e cas de figure. En Python on dit qu'il vaut mieux être explicite plutôt qu'implicite. Je te conseillerais donc de vérifier spécifiquement qu'on est dans le cas où l'utilisateur a entré "2" avec un elif plutôt qu'un else qui englobe tout et qui force quelqu'un qui lit ton code à remonter plus haut pour voir quel est cet autre cas de figure qui va être géré par le else.

  3. Répétition de code : Il y a quelques portions de ton code qui sont répétées plusieurs fois (comme l'affichage des dégâts et des points de vie). Plus tard avec les fonctions tu verras qu'il y a moyen de mieux séparer ton code pour éviter ces répétitions mais il est aussi possible de le faire ici sans utiliser les fonctions en changeant un peu la logique. Je te laisse voir la correction pour ça :)

Sinon en règle général c'est vraiment très proche de ce que j'ai fait et le code est clean : super travail 🥳 Bonne continuation !

Salut Thibault,

Pas de soucis et merci pour ton retour ! 🙂

C'est vrai que j'avais pensé aux fonctions pour les répétitions mais comme je ne sais pas encore comment ça marche, je me suis dis que je ferai comme ça pour l'instant. J'ai vu la correction depuis et c'est vrai que ça parait plus logique comme tu as fait 😁

Je prends note pour les autres remarques, ça m'aide beaucoup pour avancer ! 😁

Merci encore et bonne journée !

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.