Téléverser les fichiers vers "/"
This commit is contained in:
parent
8b9aa3ad63
commit
4ade378bc7
90
Nim.py
Normal file
90
Nim.py
Normal file
@ -0,0 +1,90 @@
|
||||
import datetime
|
||||
import json
|
||||
import random
|
||||
|
||||
# Fonction pour afficher les tas
|
||||
def afficher_tas(tas):
|
||||
print("\nVoici les tas actuels :")
|
||||
for i, nb_objets in enumerate(tas):
|
||||
print(f"Tas {i+1}: {nb_objets} objets")
|
||||
print()
|
||||
|
||||
# Fonction pour vérifier si le jeu est terminé
|
||||
def est_jeu_termine(tas):
|
||||
return all(nb_objets == 0 for nb_objets in tas)
|
||||
|
||||
# Sauvegarder la partie dans un fichier json
|
||||
def sauvegarder_partie(historique, resultat):
|
||||
partie = {
|
||||
"date": str(datetime.datetime.now()),
|
||||
"historique": historique,
|
||||
"resultat": resultat
|
||||
}
|
||||
|
||||
# Chargement du fichier JSON existant ou création s'il n'existe pas
|
||||
try:
|
||||
with open("historique_nim.json", "r") as fichier:
|
||||
sauvegardes = json.load(fichier)
|
||||
except FileNotFoundError:
|
||||
sauvegardes = []
|
||||
|
||||
# Ajouter la nouvelle partie à l'historique
|
||||
sauvegardes.append(partie)
|
||||
|
||||
# Sauvegarde dans le fichier
|
||||
with open("historique_nim.json", "w") as fichier:
|
||||
json.dump(sauvegardes, fichier, indent=4)
|
||||
|
||||
# Heuristique pour l'ordinateur : choisir un tas non vide au hasard et prendre un nombre aléatoire d'objets
|
||||
def heuristique_ordinateur(tas, historique, joueur):
|
||||
tas_non_vide = [i for i, nb_objets in enumerate(tas) if nb_objets > 0]
|
||||
tas_choisi = random.choice(tas_non_vide)
|
||||
if 3 <= tas[tas_choisi]:
|
||||
nb_objets = random.randint(1, 3)
|
||||
elif tas[tas_choisi] == 1:
|
||||
nb_objets = 1
|
||||
else:
|
||||
nb_objets = random.randint(1, tas[tas_choisi])
|
||||
tas[tas_choisi] -= nb_objets
|
||||
historique.append(f"Joueur{joueur} a pris {nb_objets} objets du tas {tas_choisi + 1}")
|
||||
print(f"L'ordinateur a pris {nb_objets} objets du tas {tas_choisi + 1}.\n")
|
||||
|
||||
# Fonction principale pour jouer au jeu
|
||||
def jeu_de_nim(tas_initial, mode="normal"):
|
||||
tas = tas_initial[:]
|
||||
joueur = 1 # 1 pour joueur humain, 2 pour ordinateur
|
||||
afficher_tas(tas)
|
||||
historique = [f"Tas initiaux: {tas}"]
|
||||
|
||||
while not est_jeu_termine(tas):
|
||||
if joueur == 1:
|
||||
print("Tour du joueur 1 :")
|
||||
heuristique_ordinateur(tas, historique, joueur)
|
||||
else:
|
||||
print("Tour du joueur 2 :")
|
||||
heuristique_ordinateur(tas, historique, joueur)
|
||||
|
||||
# Changer de joueur
|
||||
joueur = 2 if joueur == 1 else 1
|
||||
|
||||
# Condition de victoire/perte
|
||||
if mode == "normal":
|
||||
if joueur == 2:
|
||||
print("Joueur 1 a gagné.")
|
||||
Resultat = ("joueur 1 a gagné")
|
||||
else:
|
||||
print("Joueur 2 a gagné.")
|
||||
Resultat = ("joueur 2 a gagné")
|
||||
elif mode == "misere":
|
||||
if joueur == 2:
|
||||
print("Joueur 2 a perdu (version misère).")
|
||||
Resultat = ("joueur 1 a gagné")
|
||||
else:
|
||||
print("Joueur 1 a perdu (version misère).")
|
||||
Resultat = ("joueur 2 a gagné")
|
||||
sauvegarder_partie(historique,Resultat)
|
||||
|
||||
|
||||
tas_initial = [random.randint(5, 10), random.randint(5, 10), random.randint(5, 10)]
|
||||
mode_de_jeu = "normal"
|
||||
jeu_de_nim(tas_initial, mode_de_jeu)
|
Loading…
Reference in New Issue
Block a user