Exercice 30 Déroulement du jeu Exercice 30 a - BFH

Transcription

Exercice 30 Déroulement du jeu Exercice 30 a - BFH
Université de Neuchâtel
Faculté des sciences
Informatique technique
Exercice 30
Définissez la version simplifiée du jeu Mastermind, en suivant systématiquement les étapes décrites
dans cet exercice. Le but du Mastermind est la recherche d’une combinaison secrète formée de 4
jetons, choisis parmi 4 couleurs différentes (rouge, jaune, vert et bleu).
Déroulement du jeu
Au départ l’ordinateur doit déterminer la combinaison secrète. Ensuite, le joueur doit essayer de
retrouver cette combinaison en proposant successivement ses propres combinaisons. Pour cela il
doit introduire les abréviations des couleurs des jetons à l’aide du clavier (r pour le rouge, j pour le
jaune, v pour le vert et b pour le bleu). L’ordinateur doit systématiquement évaluer les propositions du
joueur afin d’afficher le nombre de jetons, qui sont soit à la bonne place ou qui apparaissent à une
autre place. Le jeu doit se terminer lorsque la combinaison secrète a été retrouvée.
Exercice 30 a
Définissez la fonction DefineCombination, qui détermine la combinaison secrète à l’aide de la
fonction « int rand (void) » de la bibliothèque standard « sdtlib.h.». La fonction rand retourne
une valeur entière aléatoire, qui se situe entre 0 et RANDMAX. La liste des paramètres de la fonction
DefineCombination doit contenir un pointeur sur char, afin de pouvoir transmettre le tableau
SecreteCombination. Ce tableau est composé de 4 éléments char afin de pouvoir stocker les
abréviations des couleurs des jetons, qui composent la combinaison secrète (r pour le rouge, j pour
le jaune, v pour le vert et b pour le bleu).
Le prototype de la fonction est le suivant :
void DefineCombination (char SecreteCombination[]);
Exercice 30 b
Définissez la fonction AnalyzePosition, qui évalue le nombre de jetons qui ont à la fois la bonne
couleur et la bonne place. Le résultat doit être retourné à l’aide d’une valeur entière. La liste des
paramètres de la fonction contient deux pointeurs sur char, afin de pouvoir transmettre les tableaux
SecreteCombination et TriedCombination. Ces tableaux sont composés de 4 éléments char
afin de pouvoir stocker les abréviations des couleurs des jetons, qui composent respectivement la
combinaison secrète et la proposition du joueur (r pour le rouge, j pour le jaune, v pour le vert et b
pour le bleu).
Le prototype de la fonction est le suivant :
int AnalyzePosition (char SecreteCombination[], char TriedCombination[]);
Exercice 30 c
Définissez la fonction AnalyzeColor, qui analyse la couleur des jetons de la combinaison proposée
par le joueur. Ici le résultat doit être également retourné à l’aide des valeurs entières. La liste des
paramètre est identique à celle de la fonction AnalyzePosition. Prototype de la fonction :
Imprimé le 23.11.2010
E. Firouzi
Page 1
Université de Neuchâtel
Faculté des sciences
Informatique technique
int AnalyzeColor (char SecreteCombination[], char TriedCombination[]);
Exercice 30 d
Définissez la fonction main, qui contrôle le déroulement du jeu à l’aide des fonctions
DefineCombination, AnalyzePosition et AnalyzeColor.
La fonction DefineCombination doit définir au début du jeu la solution secrète. L’ordinateur doit
ensuite attendre jusqu’à ce que le joueur ait introduit sa combinaison à l’aide du clavier. Ces
combinaisons doivent être analysées à l’aide des fonctions AnalyzePosition et AnalyzeColor,
et le résultat de cette analyse doit être affiché sur l’écran. Le jeu doit se terminer soit avec la bonne
combinaison ou après 8 essais.
Imprimé le 23.11.2010
E. Firouzi
Page 2