Nous voulons réaliser un jeu de Master-Mind en mode texte. Le but du MasterMind est trouver une combinaison de couleurs mystère. Le joueur fait une proposition, si c’est la combinaison mystère, il à gagné. Sinon on lui répond le nombre de couleurs bien placées dans la combinaison mystères et le nombre de couleurs mal placées appartenant à la solution.
Remarque: Le but du projet n’est pas uniquement de produire un programme qui fonctionne (même si cela est plus gratifiant). Vous êtes supposés fournir un travail à la fois en algorithmique et en programmation. Les deux parties seront évaluées.
Les règles du jeu d’une manche sont imposées, le déroulement d’une partie est libre (il vous faudra faire preuve d’imagination). Cependant nous vous demandons le minimum suivant :
Le système de point sont laissés libres.
Cette liste n’est bien entendu pas exhaustive, nous encourageons les groupes à trouver des idées originales permettant de rendre leur jeu plus intéressant et/ou amusant.
L’ordinateur choisit une combinaison. Comme il est un peu schizophrène il essaye ensuite de la trouver.
L’exécutable de votre programme se nommera mmind
.
Il se lancera de la manière suivante :
./mmind [-0|-1-|2] [-m <mode_de_jeu>] [dictionaire] [-h]
-0|-1|-2
-m mode_de_jeu
dictionaire
-h
Pour gérer les options sur la ligne de commandes, utilisez man 3 getopt
.
Dans un premier temps les combinaisons proposés par l’ordinateur seront tirées au hasard.
Par la suite les combinaisons mystères seront lues depuis un fichier (un dictionnaire). Afin de pouvoir échanger vos dictionnaires préférés avec vos collègues, nous standardisons leur format.
La première ligne du fichier est le titre du dictionnaire. Le reste du fichier est une liste de combinaisons mystères, une par ligne.
#
sont des commentaires, elle seront ignorées.?
, dans ce cas il sera remplacé par une couleur aléatoire parmi les
couleurs non présentes dans la combinaison (si possible). Le caractère *
quand à lui, représente une couleur aléatoire déjà présente dans la combinaison
(si c’est possible).Remarque : La regle des
?
et*
sera aussi utilisée lors des saisies au clavier (… tiens mais c’est en fait probablement la même fonction …)
Les projets sont à rendre avant le (date a définir) 17h. Aucun document ne sera accepté après cette date.
Le travail sera fait par groupe de 3, les membres devant faire partie du même groupe de T.P.
Vous devez rendre :
Un (bref) rapport d’analyse où vous exposez :
Ce document devra être déposé au secrétariat électronique, et nulle part ailleurs (pas de casier, bureau ou autre).
Makefile
, et tout autre
fichier vous semblant utile (dictionnaires, manuel d’utilisation.). Il est
à noter que vos programmes doivent compiler sans problème sur un autre
utilisateur que votre compte, sans message d’erreur, warning* ou autre (en
tapant simplement :make
).Les fichiers devront être transmis à votre chargé de TD selon la méthode de son choix (SVN, dossier ou archive)
Les fichiers ayant une date postérieure à la date limite seront pénalisés.
Un Makefile
relativement générique.
Pour les explications allez voir ici
Un guide sur l’utilisation de SVN et le pdf associé.
Un fichier de configuration pour SVN à l’Enseirb-Matmeca :
mkdir -p ~/.subversion && wget http://www.labri.fr/perso/renault/working/teaching/projets/files/config-subversion -O ~/.subversion/config
Les règles du jeu du Master-Mind.