Bonjour. je voulais vous exposer ma version pour voir si elle est optimiser et ce que vous en pensee
import random
import os
rules = """\t📜RULES📜
1) Le jeu comporte deux joueurs, donc vous et un ennemi
2) Vous, comme le joueur, vous commencez avec le même nombre de points de vie, donc avec 50 points de vie
3) Vous avez un avantage, c'est que vous avez trois potions qui vous permettent de récupérer des points de vie (15 ~ 50 HP)tandis que l'ennemi, lui ne dispose d'aucune potion.
4) Pour un equilibre des forces l'enemis peut vous infliger 5 ~ 15 point de degat tandis que vous ne pouvez infliger que 5 ~ 10 point de degat
5) Également, lorsque vous choisissez d'utiliser une potion plutôt que d'attaquer, vous récupérez des points de vie, sauf que l'ennemi va vous attaquer au même tour et le tour d'après
\t😊Bonne chance a vous😊
\t\tVeuillez taper entrer pour commencer le jeux """
a = input(rules)
if a == "":
os.system('cls')
else:
os.system('cls')
user = ""
user_HP = AI_HP = 50
item = 3
choix = str(list(range(1, 3)))
choix = choix[1: -1]
choix = choix.replace(" ", "")
choix = choix.replace(",", "")
user_extra_HP = 0
while AI_HP > 0 or user_HP > 0:
AI_ATK = random.randint(5, 15)
text_2 = f"""l'enemi vous a infliger {AI_ATK} de degat🔥🐉."""
text_4 = "Votre tour fu passe suite a votre derniere action🙃🙃\n"
if user_extra_HP == 0:
text_1 = f"Souhaitez-vous attaquer ({choix[0]}) ou utiliser une poiton ({choix[1]})? "
user_ATK = random.randint(5, 10)
text_3 = f"""Vous avez infliger {user_ATK} de degat a l'ennemi.🤺⚔️\n"""
print('-' * 50)
user = input(text_1)
if user not in choix:
continue
elif user == choix[0]:
print(text_3)
AI_HP -= user_ATK
if AI_HP >0:
print(text_2)
user_HP -= AI_ATK
if user_HP > 0 and AI_HP > 0:
text_6 = f"""il vous reste {user_HP} de point de vie🩸💓.
il reste a l'ennemi {AI_HP} de point de vie🩸💓."""
print(text_6)
else:
if user_HP <= 0:
print("Vous avez perdu😓😓 \n Fin du jeux")
if AI_HP <= 0:
print("Vous avez gagner💪💪 \n Fin du jeux")
break
elif user == choix[1]:
user_HP -= AI_ATK
item -= 1
if item > 0:
user_extra_HP = random.randint(10, 20)
text_5 = f"Vous recuperer {user_extra_HP} de point de vie🩸💓 (il vous reste {item} potion🧪🧫{'s' if item >1 else ''})\n"
user_HP += user_extra_HP
text_2 = f"""l'enemi vous a infliger {AI_ATK} de degat🔥🐉.\n"""
print(text_5, text_2)
if user_HP <= 0:
print("Vous avez perdu😓😓 \n Fin du jeux")
break
else:
text_6 = f"""il vous reste {user_HP} de point de vie🩸💓.
il reste a l'ennemi {AI_HP} de point de vie🩸💓."""
print(text_6, "\n", "-" * 50)
continue
else:
print("Vous n'avez plus de potion.")
continue
else:
user_HP -= AI_ATK
text_6 = f"""\nil vous reste {user_HP} de point de vie🩸💓.
il reste a l'ennemi {AI_HP} de point de vie.🩸💓"""
print(text_4, text_2)
if user_HP >0:
print(text_6)
else:
print("Vous avez perdu😓😓 \n Fin du jeux")
break
user_extra_HP = 0
user = "2"
continue
Salut Issiaka !
Voilà un petit résumé de remarques et conseils sur ce que tu pourrais améliorer dans ton script. Mais déjà bravo d'être arrivé jusque là, c'est super d'arriver à un code fonctionnel et ne t'en fais pas, c'est vraiment en pratiquant et avec le temps que tu pourras écrire directement du code mieux formaté, mais c'est un super début, continue comme ça !
Structure du code
-
Noms des variables
Essaie de donner des noms plus descriptifs aux variables pour faciliter la lecture et la compréhension du code, là avectext_1ettext_2ce n'est pas très clair dans le code de ce à quoi ces variables correspondent, il faut retourner voir la déclaration pour savoir ce qu'elles contiennent.
text_1 = f"Souhaitez-vous attaquer ({choix[0]}) ou utiliser une poiton ({choix[1]})? " text_2 = f"""l'enemi vous a infliger {AI_ATK} de degat🔥🐉.""" -
Répétition de code
Cette partie est répétée plusieurs fois dans le code. À ce stade-ci tu n'as pas encore vu les fonctions, et tu pourrais les utiliser par la suite pour éviter la répétition de code, mais c'est possible de le faire également sans utiliser de fonction (voir ma solution proposée à la fin) :
if AI_HP > 0 and user_HP > 0: text_6 = f"""il vous reste {user_HP} de point de vie🩸💓. il reste a l'ennemi {AI_HP} de point de vie🩸💓.""" print(text_6) -
Condition sur
ainutile
La condition n'est pas utile ici puisque dans les deux cas, l'écran est effacé.
if a == "": os.system('cls') else: os.system('cls')
Clarté et lisibilité
-
Séparation des tâches
Là encore, même sans avoir vu les fonctions, n'hésite pas à aérer un peu plus ton code en rajoutant des commentaires ou des sauts de ligne entre différents blocs de logique (voir ma solution). -
Messages d'état du jeu
Ces messages sont dispersés dans le code :
print(text_6)
Tu peux essayer de centraliser cette logique pour améliorer la lisibilité.
Logique du jeu
-
Gestion des potions
Tu devrais vérifier s'il reste des potions avant d'en utiliser une ;)
item -= 1 -
Vérification des entrées de l'utilisateur
Un message indiquant une entrée invalide serait utile ici car lecontinuen'est pas visible pour l'utilisateur quand il fait un choix invalide.
if user not in choix: continue -
Fin du jeu
La condition devrait plutôt êtreAI_HP > 0 and user_HP > 0pour sortir de la boucle dès que l'un des deux atteint zéro ou moins.
while AI_HP > 0 or user_HP > 0:
Voici un exemple de code qui intègre toutes ces recommandations (j'ai réintégré le "skip_turn" aussi), mais je te conseille d'essayer également de ton côté de reformater le code avec les conseils pour que ça s'ancre bien ;)
import random
import os
# Affichage des règles
rules = """\t📜RULES📜
...
\t\tVeuillez taper entrer pour commencer le jeux """
input(rules)
os.system('cls')
player_HP = enemy_HP = 50
potions = 3
skip_turn = False
while player_HP > 0 and enemy_HP > 0:
if not skip_turn:
user_choice = input("Souhaitez-vous attaquer (1) ou utiliser une potion (2) ? ")
if user_choice not in ["1", "2"]:
print("Choix invalide. Essaye encore.")
continue
if user_choice == "1":
player_attack = random.randint(5, 10)
print(f"Vous avez infligé {player_attack} points de dégats à l'ennemi ⚔️")
enemy_HP -= player_attack
elif user_choice == "2":
if potions > 0:
potion_health = random.randint(15, 50)
print(f"Vous récupérez {potion_health} points de vie ❤️ ({potions} 🧪 restantes)")
player_HP += potion_health
potions -= 1
skip_turn = True
else:
print("Vous n'avez plus de potions...")
continue
if skip_turn:
print("Vous passez votre tour...")
skip_turn = False
enemy_attack = random.randint(5, 15)
print(f"L'ennemi vous a infligé {enemy_attack} points de dégats ⚔️")
player_HP -= enemy_attack
print(f"Il vous reste {player_HP} points de vie.")
print(f"Il reste {enemy_HP} points de vie à l'ennemi.")
print("-" * 50)
if player_HP <= 0:
print("Tu as perdu 😢")
else:
print("Tu as gagné 💪")
print("Fin du jeu.")
Bonne continuation !
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte