1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| # Voici la fonction qui présente le jeu et qui propose au joueur de voir les règles.
def Present():
print("Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz en 1962")
print("Voulez-vous voir les règles? Si oui ecrivez 'ok', si non tapez sur une touche quelconque, puis appuyez sur la touche 'Entrée'.")
Ouiounon = input()
if Ouiounon == 'ok':
print("L'ordinateur choisit une combinaison de quatre chiffres allant de 1 à 4")
print("Le joueur doit ensuite découvrir cette combinaison en proposant des combinaisons de chiffres qu'il crées,")
print("Pour l'aider, l'ordinateur indiquera le nombre de chiffres bien et mal positionnés de la combinaison,")
print("Le nombre de chiffres absents de la combinaison ne sera en revanche pas donné.")
print("")
#Voici la fonction qui gère les erreurs de saisie.
def Erreur(Liste):
try:
Numero = int(input())
while (Numero < 1) or (Numero > 4) or (Numero != int(Numero)):
Numero = int(input("Tu dois entrer un entier naturel compris entre 1 et 4, entre un autre chiffre: "))
except (ValueError, TypeError):
print("Erreur lors de la lecture de ton chiffre,")
print("Tu dois entrer un entier naturel compris entre 1 et 4, entre un autre chiffre: ")
Erreur(Liste)
# A l'intérieur de la boucle principale, on insère une fonction qui compte et affiche les chiffres bien placés.
def Bienplaces():
Bien = 0
for b in range(Nombre):
if Reponse[b] == Code_bis[b]:
Bien += 1
Code_bis[b] = -98
Reponse[b] = -38
print("Appuie" , Bien, "fois sur le bouton du bas de la brique (Nombre de biens placés).")
return Bien
# Ainsi qu'une fonction qui compte et affiche les chiffres mal placés.
def Malplaces():
Mal = 0
for i in range(0, 4, 1):
for j in range(0, 4, 1):
if (Code_bis[i] == Reponse[j]) and (i != j):
Mal += 1
Code_bis[i] = -27
Reponse[j] = -12
print("Appuie" , Mal, "fois sur le bouton du milieu de la brique (Nombre de mal placés).")
return Mal
# Corps du Programme:
# On importe les fonctions "Aléatoire" pour que l'ordinateur génère le code à trouver.
from random import *
Present()
Compteur = 0
Nombre = 4
Nbmax = 4
Essaismax = int(input("Entrez le nombre d'essais maximum pour trouver une combinaison : "))
x = 0
print("")
print("Entrez votre combinaison.")
# Ceci est la boucle qui génère le Code, en prévoyant les erreurs.
Code = [0] * 4
for x in range(0, 4 ,1):
Code = Erreur(Code)
# Ceci est la fonction "tuple" qui rend invariable le Code.
tupCode = tuple(Code)
print("")
print("Vous devez trouver la combinaison du joueur en" , Essaismax, " essais maximum.")
print("")
# Ceci est la boucle des propositions du joueur, c'est la boucle principale du programme.
while Compteur < Essaismax :
print("Entrez une combinaison.")
Code_bis = list(tupCode)
# Ceci est la boucle qui génère la Reponse du joueur, en prévoyant les erreurs.
Reponse = [0] * 4
for x in range(0, 4 ,1):
Reponse = Erreur(Reponse)
print(Reponse)
# On appelle les fonctions qui "diagnostiquent" la Reponse.
Bien = Bienplaces()
Mal = Malplaces()
# Enfin, voici le compteur d'essais et le message de réponse qui s'affichent en fin de boucle.
Trouve = (Bien == Nombre)
if Trouve:
print("Bravo, tu as trouvé la bonne combinaison! En seulement" , Compteur + 1, "essais!")
Compteur = 1000
elif (Essaismax - Compteur - 1 != 0):
print("Essaie encore, il te reste encore" , Essaismax - Compteur - 1, "essais.")
Compteur += 1
if (Essaismax - Compteur == 0) and (not Trouve):
print("Tu as épuisé tous tes essais -----> Perdu! La bonne combinaison était:" , Code, "! Dommage!") |
Partager