Il s'agit de produire un programme (fichiers source et un exécutable testé et opérationnel avec
la documentation), dont le sujet est présenté dans ce document. Le développement de ce programme se fera en langage C. Objectifs du projet : Valider les compétences du cours « Programmation Procédurale en C » par l’écriture d’un programme original en langage C, correspondant à 21 heures de travail effectif. Organisation : Les étudiants travaillent en binôme A rendre : Le programme source complet largement commenté Un exécutable testé et opérationnel Un rapport présentant le travail effectué : 1. Organisation du programme : découpage en fonctions, rôle de ces fonctions, explications du programme 2. Mode d’emploi du programme 3. Bilan du travail, difficultés rencontrées, etc. Évaluation du projet Elle repose sur les éléments suivants : Le programme source : Respect de l’énoncé, originalité du thème proposé, Qualité technique du programme : découpage en fonctions, instructions, algorithmes, efficacité, gestion des erreurs… Présentation du programme : indentation, commentaires et nommage Documentation fournie Organisation du programme et son mode d’emploi
Enoncé : On se propose de développer le jeu SUDOKU en C.
Le Sudoku (http ://fr.wikipedia.org/wiki/Sudoku) est un jeu de grille, où le joueur doit remplir
une grille de 81 cases, composée de 3x3 sous-grilles. Chaque sous-grille étant elle-même de 3 cases sur 3. Chaque case contient un chiffre entre 1 et 9. Au départ, le joueur se voit présenté une grille partiellement remplie, et doit étapes par étapes trouver comment remplir les cases pour que la grille soit parfaite. Une grille est dite parfaite si : - chaque ligne de la grille contient tous les chiffres de 1 à 9 ; 1 - chaque colonne de la grille contient tous les chiffres de 1 à 9 ; - chaque sous-grille de la grille contient tous les chiffres de 1 à 9 ; Le développement de cette application consiste en quatre phases : 1. Mettre en place la fonctionnalité de création de la matrice parfaite que le joueur va essayer de trouver ; 2. Mettre la place la fonctionnalité de création de la matrice à trou que le joueur va remplir au fur-et-à-mesure du jeu, à partir de la matrice parfaite crée précédemment ; 3. Mettre en place la fonctionnalité d’affichage de la matrice courante ; 4. Mettre en place le programme principal de jeu ;
1) Créer une grille parfaite
Mettre en place une procédure visant à créer une matrice de 9x9 cases, stockant la matrice "solution", que le joueur va essayer de trouver. On pourra ici utiliser la matrice parfaite suivante :
2) Créer la grille de jeu à partir de la grille parfaite
La grille de référence servira de base pour créer une grille à trou, qui est celle qui sera montrée à l’utilisateur et remplie au fur et à mesure des tours. Cette fonctionnalité sera paramétrée par un entier compris entre 1 et 3, suivant le niveau de difficulté désiré de la grille (une grille est d’autant plus difficile que le nombre de trous initial est important). Pour une même grille parfaite et le même niveau de difficulté, deux appels à cette fonctionnalité pourront fournir deux grilles de jeu différentes. 3) Afficher la grille de jeu courante Mettre en place une fonction prenant en argument la grille de jeu courante et l’affichant d’une manière compréhensible par l’utilisateur.