Avis sur le code
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... 💀")
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 🤩
-
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 ;)
-
Structure conditionnelle : tu ne vérifies la condition que pour le "1" et tu utilises un
elsepour 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'unelsequi 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 leelse. -
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 !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte