IA_TP_LAWSON-LARTEGO/TPIA/jeu_nim/exo9.py
2024-10-23 21:37:10 +02:00

47 lines
1.8 KiB
Python

def afficher_etat(etat_jeu):
"""Affiche l'état actuel du jeu."""
print("État actuel du jeu :")
for i, tas in enumerate(etat_jeu):
print(f"Tas {i + 1}: {tas} objets")
def appliquer_mouvement(etat_jeu, tas_index, nb_objets):
"""Applique un mouvement et modifie l'état du jeu."""
etat_jeu[tas_index] -= nb_objets
def mouvement_valide(etat_jeu, tas_index, nb_objets):
"""Vérifie si un mouvement est valide."""
return 0 <= tas_index < len(etat_jeu) and 1 <= nb_objets <= etat_jeu[tas_index]
def est_etat_final(etat_jeu):
"""Vérifie si tous les tas sont vides."""
return all(tas == 0 for tas in etat_jeu)
def boucle_de_jeu():
"""Boucle de jeu pour permettre à l'utilisateur de jouer."""
# Initialisation de l'état du jeu (par exemple, trois tas avec 3, 4 et 5 objets)
etat_jeu = [3, 4, 5]
# Boucle principale du jeu
while not est_etat_final(etat_jeu):
# Afficher l'état actuel du jeu
afficher_etat(etat_jeu)
# Demander à l'utilisateur quel tas et combien d'objets retirer
try:
tas_index = int(input("Choisissez un tas (1, 2, 3...): ")) - 1
nb_objets = int(input(f"Combien d'objets voulez-vous retirer du tas {tas_index + 1}? "))
# Vérifier si le mouvement est valide
if mouvement_valide(etat_jeu, tas_index, nb_objets):
appliquer_mouvement(etat_jeu, tas_index, nb_objets)
else:
print("Mouvement invalide ! Essayez à nouveau.")
except ValueError:
print("Entrée invalide. Veuillez entrer des nombres entiers.")
# Fin du jeu : si tous les tas sont vides
print("Félicitations ! Vous avez gagné !")
# Lancer la boucle de jeu
boucle_de_jeu()