Bonjour, un DM en spécialité NSI, si possible les fonctions faites de A à Z ( pas de break par exemple ) merciii Ce jeu se joue à deux. Les joueurs jouent chacun leur tour. On dispose de 15 cailloux au départ. A chaque tour de jeu, un joueur peut prendre 1, 2 ou 3 cailloux, puis le tour passe automatiquement à l'autre joueur. Le joueur qui prend le dernier caillou a gagné. Ce programme peut se dérouler en ligne de commande. Il faut alors sécuriser les saisies des joueurs. Un joueur ne doit pas perdre son tour et le nombre de cailloux restants ne doit pas changer si le joueur a mal tapé le nombre de cailloux qu'il souhaite prendre. Vous devez aussi ajouter un mode de jeu contre l'ordinateur. L'ordinateur doit alors adopter une stratégie gagnante (il faut prendre assez de cailloux pour laisser à l'autre joueur un multiple de 4).
Lista de comentários
Réponse:
def jouer_tour(cailloux, tour):
"""
Cette fonction permet à un joueur de jouer son tour.
Elle demande à l'utilisateur de saisir le nombre de cailloux qu'il souhaite prendre,
vérifie que la saisie est valide (1, 2 ou 3 cailloux) et met à jour le nombre de cailloux restants.
"""
while True:
choix = input(f"Tour de joueur {tour}, combien de cailloux voulez-vous prendre (1, 2 ou 3) ? ")
try:
choix = int(choix)
except ValueError:
print("Saisie incorrecte, veuillez saisir un nombre entier.")
continue
if choix not in [1, 2, 3]:
print("Saisie incorrecte, veuillez saisir 1, 2 ou 3.")
continue
if cailloux - choix < 0:
print("Saisie incorrecte, il n'y a plus assez de cailloux.")
continue
cailloux -= choix
break
return cailloux
def jouer_contre_ordinateur(cailloux):
"""
Cette fonction permet de jouer contre l'ordinateur.
L'ordinateur adopte une stratégie gagnante en prenant assez de cailloux pour laisser à l'autre joueur un multiple de 4.
"""
tour = 1 # Le joueur 1 commence
while cailloux > 0:
if tour == 1:
# Tour de l'utilisateur
cailloux = jouer_tour(cailloux, tour)
else:
# Tour de l'ordinateur
if (cailloux - 1) % 4 == 0:
choix = 1
elif (cailloux - 2) % 4 == 0:
choix = 2
else:
choix = 3
print(f"Tour de l'ordinateur, il prend {choix} cailloux.")
cailloux -= choix
tour = 3 - tour # Changement de tour
print(f"Le joueur {3 - tour} a gagné !")
def jouer_a_deux(cailloux):
"""
Cette fonction permet de jouer à deux.
"""
tour = 1 # Le joueur 1 commence
while cailloux > 0:
cailloux = jouer_tour(cailloux, tour)
tour = 3 - tour # Changement de tour
print(f"Le joueur {3 - tour} a gagné !")
if __name__ == "__main__":
cailloux = 15 # Nombre de cailloux au départ
while True:
mode = input("Choisissez le mode