Projet Sudoku
Transcription
Projet Sudoku
Laboratoire de Développement de Programmes : Projet Sudoku Julie Anciaux et François Schoubben 2ème semestre 2006-2007 Année : Cours : Professeur : Assistants : 1er Bac en Informatique et Ingénieur de Gestion Orientation Management de l’Information Laboratoire de Développement de Programmes (B132) Naji Habra Bureau Mail Tel Julie Anciaux 227 [email protected] 081/ 72 49 98 Anthony Cleve 431 [email protected] 081/ 72 49 81 Badr Jabari 432 [email protected] 081/ 72 52 57 François Schoubben 324 [email protected] Licence : Cet énoncé est disponible sous GNU Free Documentation License 1 . 1 http://www.gnu.org/copyleft/fdl.html Table des matières 1 Introduction 1 2 Règles du jeu 2 3 Transposition informatique 3.1 Partie virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Mémorisation des meilleurs scores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 4 Calendrier 4 5 Déroulement des séances 4 6 Le rapport 5 7 Le code Pascal 6 8 Présentation intermédiaire 6 9 Remise du projet 6 10 Echéances 7 11 Défense 7 12 Mode de cotation 7 13 Dernière ligne droite 7 14 Bonus 8 15 Seconde session 8 16 Contacts 8 1 1 INTRODUCTION Introduction Ce projet a pour but de mettre en pratique les notions apprises durant le cours de programmation du premier semestre (B131). Il est essentiel d’avoir assimilé les concepts abordés par M. Habra. Il vous est demandé de concevoir un jeu de Sudoku . La conception ira de l’analyse des besoins jusqu’à l’affichage des meilleurs scores en passant par le choix de la couleur de la grille. Vous allez donc mener à bien un véritable projet informatique : de l’idée à la défense du projet, en passant par les spécifications, .... Nous vous demandons d’agir professionnellement, à savoir qu’il faut tant répondre aux critères algorithmiques que rédiger un rapport complet (spécifications, invariants, méthode de travail, . . .) sur votre programme. Ce n’est pas parce que le programme “tourne” que vous aurez des points, mais bien parce qu’il sera réalisé conformément à toutes nos spécifications. Ceux qui ignorent les vraies règles de ce jeu 2 les trouveront détaillées à la section 2. Les détails de la transposition en partie virtuelle figurent à la section 3.1. La section 3.2 vous expliquera comment établir les scores et développer ainsi des statistiques de jeu. Ensuite, nous vous détaillerons brièvement comment vous pourrez mener à bien ce projet grâce à un calendrier (section 4) au fur et à mesure des séances (section 5). Les sections 6 et 7 vous expliquent ce que nous attendons de vous dans le rapport et le code. Évidemment, il ne s’agit que des grandes lignes. Toute originalité, dans le respect de nos conventions, est la bienvenue. La procédure d’envoi de votre projet figure à la section 9 et les dates de remise figurent à la section 10. Les autres points de contrôle sont une présentation intermédiaire (section 8), ainsi que la présentation de votre projet après Pâques comme expliqué à la section 11. Ensuite, nous vous expliquons notre méthode de cotation, à lire absolument afin de focaliser vos ressources cérébrales aux fins les plus utiles (section 12). Pour les plus rapides, nous proposons un petit bonus (section 14). Vous trouverez aussi des informations sur la seconde session (section 15), au cas où. Des questions ? Des remarques ? Voir la section contact (16). Avant de rendre votre rapport, regardez s’il répond à toutes nos attentes... Nous insistons : “Relisez l’énoncé avant de rendre le rapport” (13). 2 c’est-à-dire les nôtres 31 janvier 2007 Laboratoire de Développement de Programmes Page 1 sur 8. 3 2 TRANSPOSITION INFORMATIQUE Règles du jeu Matériel : La grille de jeu est un carré de neuf cases de côté, subdivisé en 9 carrés identiques (3 sur 3), appelés régions : Règle : La règle du jeu est simple : chaque ligne, colonne et région doit contenir une et une seule fois chaque chiffre de un à neuf. Via Wikipedia : http://fr.wikipedia.org/wiki/Sudoku 3 Transposition informatique 3.1 Partie virtuelle Voici les grandes lignes d’une partie virtuelle. Elles peuvent ne pas se dérouler dans cet ordre. – Lire un fichier texte contenant les grilles jouables et le stocker en mémoire ; – identifier le joueur par un mécanisme de nom d’utilisateur (login), et éventuellement une authentification (par mot de passe) ; – proposer des statistiques au joueur courant (niveau, statistiques sur le nombre de grilles résolues, grilles abandonnées, son classement par rapport aux autres joueurs, . . .) ; – permettre au joueur de créer une nouvelle grille de jeu (à sauver dans le fichier texte) ; – permettre de jouer une nouvelle partie en choisissant le niveau (Facile, Moyen, Difficile) ; – afficher la grille, le login, le nombre de cases encore vides et éventuellement les règles ; – sélectionner une grille, au hasard dans la liste des grilles jouables, selon le niveau choisi par l’utilisateur ; – permettre le placement des chiffres par le joueur sur les cases “jouables”. Les cases de la grille de départ, c’est à dire les cases dont les valeurs sont dans le fichier texte, ne peuvent pas être modifiées par le joueur ; – vérifier que chaque chiffre placé par le joueur n’est pas en double dans la ligne, la colonne ou la région ; – annoncer, le cas échéant, la fin de la partie et les points ; – enregistrer les données relatives au joueur ; – permettre de rejouer ou de quitter le jeu ; Nous vous demandons de faire un minimum de contrôle de saisie, c’est-à-dire de gérer le cas où l’utilisateur introduit un mauvais caractère (une lettre à la place d’un chiffre par exemple). 31 janvier 2007 Laboratoire de Développement de Programmes Page 2 sur 8. 3 Format du fichier de données : TRANSPOSITION INFORMATIQUE le fichier texte contient les grilles sous la forme suivante : Niveau Taille-C^ oté Lettre-ligne Chiffre-colonne Valeur Lettre-ligne Chiffre-colonne Valeur Lettre-ligne Chiffre-colonne Valeur ... Ligne Vide Exemple (sur 3 colonnes) : Facile 9x9 .... Difficile 9x9 A 5 2 A 7 9 B 5 6 B 6 3 B 9 8 C 1 3 C 6 8 C 7 1 C D D D E E E E F F F G 8 5 7 9 2 3 7 8 1 3 5 2 4 4 8 7 8 4 6 1 1 7 5 1 G G G H H H I I 3 4 9 1 4 5 2 5 5 9 2 9 4 8 2 1 Moyen 9x9 ... donnera la grille 3.2 Mémorisation des meilleurs scores Nous vous demandons de permettre la mémorisation de certaines données afin de faire des statistiques sur les parties jouées. On peut envisager de retenir, pour chaque joueur, des renseignements tels que le nombre de parties jouées, gagnées, la durée d’une partie, . . . Nous vous laissons libres pour ces spécifications, faites preuve d’originalité. Il va de soi que ces informations relatives aux différents utilisateurs de votre programme doivent être conservées d’une exécution du jeu à l’autre. 31 janvier 2007 Laboratoire de Développement de Programmes Page 3 sur 8. 5 4 DÉROULEMENT DES SÉANCES Calendrier Nous vous proposons de diviser le projet en 5 étapes et éventuellement une 6 ème , considérée comme un bonus. Vous avez 8 semaines pour les mener à bien. 1. Gérer les données et l’interface (semaines 0 et 1 : 31 janvier et 5 f évrier ) – Définir le type des données que l’on va utiliser pour modéliser le jeu (grille, valeurs, . . .) ; – gérer un affichage efficace de la grille. Essayez de prévoir tous les affichages possibles au niveau de la place sur l’écran. 2. Préparer le terrain (semaines 2 et 3 : 12 et 19 f évrier) – Transformer le fichier texte en grilles de jeu possible ; – afficher une grille au hasard ; – placer des valeurs uniquement là où c’est autorisé (i.e. “jouable”). 3. Jouer une partie (semaine 4 : 26 février) et présentation intermédiaire – Vérifier qu’une valeur introduite n’entre en conflit ni avec la ligne, ni avec la colonne, ni avec la région. 4. Identifier les joueurs et gérer le jeu complet (semaines 5 et 6 : 5 et 12 mars) – Identifier les joueurs ; – gérer le fichier ou les fichiers pour les données relatives aux parties ; – gérer les statistiques ; – gérer le menu de jeu. 5. Création de grilles (semaine 7 : 19 mars) – Permettre de créer une grille de manière “graphique” ; – sauver les nouvelles grilles dans un fichier texte. 6. Bonus et ergonomie – Bonus (voir section 14) ; – améliorer la présentation du jeu. Les atouts d’une interface sont sa simplicité, sa “jouabilité”. L’ensemble des spécifications étant faites au fur et à mesure, la dernière semaine ne doit vous servir qu’à finaliser votre rapport. Nous vous conseillons de respecter le calendrier ci-dessus. Vous êtes libres de concevoir votre programme à votre gré, du moment que vous respectiez au mieux les étapes fixées. N’oubliez pas que ce projet ne se réalise pas en une journée et constitue un travail de longue haleine. Par mesure de sécurité, nous vous conseillons de tenir compte de l’agenda proposé pour réaliser ce projet. Nous vous recommandons aussi de nous montrer de temps à autre l’état d’avancement de votre travail pour – éviter que vous vous perdiez trop longtemps dans des culs-de-sac ; – nous donner une idée de votre travail avant la correction. 5 Déroulement des séances Les séances de TP se déroulent au Séminaire 1 ou au pool. Durant ces séances, nous ne ferons pas d’exposé oral puisque la matière correspond à celle vue au cours du premier trimestre. Toutefois, il est utile, sinon indispensable d’y assister pour que nous puissions juger de l’état d’avancementde votre projet et vous guider. Des informations supplémentaires circuleront aussi durant ces séances. 31 janvier 2007 Laboratoire de Développement de Programmes Page 4 sur 8. 6 6 LE RAPPORT Le rapport Nous vous demandons d’écrire un rapport : – dactylographié – en recto uniquement. – exempt de fautes d’orthographe3 . Faites le relire ! – contenant impérativement : 1. une page de garde, mentionnant au minimum vos nom et prénom en haut à droite ; 2. une table des matières4 , sur feuille volante, dans laquelle se trouvent les noms de toutes les procédures ; 3. une description de la manière dont votre projet a pris forme ( 12 page) ; 4. une explication sur le fonctionnement global de votre programme (1 page) ; 5. une feuille volante présentant les types utilisés ; 6. une feuille volante contenant un graphe de dépendance de vos procédures ; 7. une défense des points forts ( 21 page) et faibles ( 12 page) de votre programme . Les points faibles, c’est ce qui ne va pas dans votre programme, les bugs connus ; 8. une présentation de quelques idées qui amélioreraient votre programme ( 12 page). Modifier les points faibles n’est pas le genre d’amélioration que nous attendons ici ; nous attendons plutôt ce qu’il serait intéressant de mettre dans une version 2.0 ; 9. les en-têtes, spécifications, invariants et ordinogrammes de chacune des procédures ainsi que du programme principal. Attention, – mettez en parallèle l’ordinogramme et les spécifications de celui-ci (nous ne voulons pas tourner la feuille pour lire les spécifications par rapport à l’ordinogramme) ; – vous ne devez pas mettre dans votre rapport les procédures n’ayant que de l’affichage (sans postcondition, avec des outputs uniquement) ; – si une procédure a plusieurs invariants, numérotez-les, et faites en sorte que nous n’ayons pas besoin de chercher à quelles boucles ils correspondent ; 10. en annexe, nous vous demandons une impression de la dernière version de votre code source, en 2 pages par feuille (et recto uniquement) pour éviter le gaspillage. N’oubliez pas de le documenter... Pour rappel, une feuille comporte 2 pages : une page recto et une page verso. N’oubliez pas de numéroter les pages de votre rapport (l’idéal est quelque chose du genre ”prénom nom - page x sur y” en pied de page). Soyez concis, un rapport de 30 pages hors code source est presque trop gros. Faites aussi un effort important au niveau de l’expression écrite, de l’orthographe et de la présentation. Important : le rapport est un document long à faire ! Faites le au fur et à mesure, pas la dernière semaine, sous peine de nuits blanches et par conséquent, de qualité médiocre. 3 4 S’il y a des fautes, nous retirerons des points ! A générer automatiquement évidemment :) 31 janvier 2007 Laboratoire de Développement de Programmes Page 5 sur 8. 9 7 REMISE DU PROJET Le code Pascal Le code source de votre programme doit être présenté de la manière suivante (exemple fictif) : Procedure : procedure choixCouleur(var c :Couleur) ; { var globales (seulement si il en faut _*vraiment*_ !) pré : post : I/O : } Remarque : – si une ligne est vide, il n’est pas nécessaire de la mettre. – les variables globales sont très peu probables hors interface graphique. Invariant : while (i <= 10) do { inv : } begin Remarque : si un invariant n’existe pas, la boucle n’a aucune raison d’exister. Votre programme pourra être testé sous Linux, Solaris et Windows. Testez le sur plusieurs plateformes si possible. 8 Présentation intermédiaire Une présentation intermédiaire personnelle et obligatoire de votre programme aura lieu à la fin de la 2ème étape. Vous nous présenterez l’état d’avancement de votre projet, aussi bien au niveau du code source qu’au niveau du rapport. Lors de cette présentation, nous vous demandons d’apporter – votre graphe de dépendance, – le code source (compilable) de tout le programme, – 4 procédures ”intéressantes”, considérées finies pour le rapport final, c’est-à-dire : – spécifications (en pdf) – organigramme (en pdf) – code source commenté dans le fichier .pas Faites particulièrement attention aux spécifications ainsi qu’à la mise en page globale. L’idée est de vous aider à ne pas rater le projet pour une ”bête” histoire de rapport. Si vous ne vous présentez pas, nous ne corrigerons pas votre projet final ! ! ! 9 Remise du projet Nous vous demandons de nous envoyer votre rapport au format pdf et votre code source en pascal (compilable) à nos quatres adresses (cf. page de garde) avec comme sujet : ”projet 1 bac”. Une réponse automatique doit vous parvenir directement disant que le message est bien reçu 5 . Si vous ne recevez pas de réponse, considerez que nous n’avons pas reçu votre mail ! Vérifiez bien le sujet (pas de majuscule, pas d’espace en trop ou trop peu, ...). Envoyez ce mail avec votre adresse des facs ([email protected]), c’est beaucoup plus facile de voir de qui il vient, qu’avec un mail provenant de [email protected]... 5 Ce système permet de certifier que vos travaux sont entre nos mains et non perdus quelque part sur le web pour des raisons multiples (serveurs down, mail trop gros, ...). 31 janvier 2007 Laboratoire de Développement de Programmes Page 6 sur 8. 12 MODE DE COTATION Afin d’être sûr que nous corrigeons bien votre programme et donc que nous ne mettrons pas vos points à quelqu’un d’autre, en plus de votre nom en commentaire dans le code source, prenez comme nom de fichiers votre prénom et nom de famille sans espaces, sans caractères accentués (ou autre cédilles) séparés par des (par exemple pour François Schoubben, ce serait francois schoubben.pas et francois schoubben.pdf). 10 Echéances La présentation intermédiaire personnelle obligatoire de votre programme aura lieu à partir du 26 février, un horaire vous sera communiqué ultérieurement. Le rapport final doit être déposé dans le casier de Julie Anciaux (sas du secrétariat, 3ème étage, Institut d’Informatique) ET envoyé par mail aux assistants (adresses sur la page de garde). Le groupe A doit remettre le travail pour le mardi 27 mars avant minuit. Les groupes B et IngGestion doivent l’avoir remis pour le jeudi 29 mars avant minuit. Tout retard entraı̂nera une pénalité de 2 points (sur le total de 20) par jour de retard entamé. Après 3 jours de retard non justifié, et dans votre intérêt, nous ne corrigerons pas votre travail. Cela équivaut à une absence à un examen. 11 Défense Après les vacances de Pâques, dès que tous les travaux auront été corrigés, chaque étudiant présentera individuellement son projet oralement. La présentation se fait avec le correcteur 6 de votre travail (l’un des assistants). Elle dure 10 à 20 minutes selon le cas. Cette présentation a une double utilité. D’une part elle vous permet de voir quelles sont vos erreurs fréquentes et d’apprendre comment ne plus les faire, et d’autre part, elle nous permet d’ajuster vos points, d’avoir la certitude que vous êtes bien l’auteur, d’éclaircir certains points flous, . . . 12 Mode de cotation Ce projet intervient dans vos résultats officiels (juin et septembre) comme un cours à part entière (B132). La note du projet est totalement indépendante de celle du cours de programmation du premier semestre (B131) ! Le projet est coté sur 20 : 9 points pour le code et 9 points pour le rapport (i.e. 7 points pour les spécifications et 2 points pour les autres éléments demandés). Les 2 points restants sont ceux d’appréciation personnelle (orthographe, présentation, interface graphique, ...). Il va de soi que, même cotées distinctement, ces 2 parties doivent constituer un tout cohérent ! Il est donc impératif de s’attarder autant sur le rapport que sur le code même si la rédaction du rapport vous paraı̂t moins passionnante ! Ce travail est INDIVIDUEL. Ceci signifie que chaque étudiant a un projet personnalisé. Tout élément indiquant le non respect de cette règle entraı̂ne une division des points entre les différents collaborateurs. Nous ne vous interdisons pas de vous échanger des idées lors des séances, après tout cela ne peut être que bénéfique, mais nous ne voulons pas de travaux complètement ou majoritairement communs ! Nous sommes aussi très exigeants quant aux dates de remise du code et du rapport (voir la section 10). En effet, ces mesures draconiennes nous permettent d’être équitables avec tout le monde : vous connaissez les règles du jeu ! Ne vous fatiguez pas à faire des interfaces graphiques fouillées, cela ne rapporte qu’au mieux un peu moins de 1 point sur 20, et encore, il faut que le reste du rapport soit irréprochable. Seule la clarté compte, pas le fait que vous ayez utilisé des librairies avec souris, 3D et/ou effets sonores. 6 désigné aléatoirement. 31 janvier 2007 Laboratoire de Développement de Programmes Page 7 sur 8. 16 13 CONTACTS Dernière ligne droite Voilà... il ne vous reste plus qu’à rendre votre projet. Quelques précautions sont à prendre avant de déposer votre rapport et d’appuyer sur la touche “send” de votre client mail ! – Vérifiez bien que vous avez répondu à tout ce qui est demandé ; – relisez 2 fois votre mail : le sujet est-il bon ? Envoyez-vous bien le fichier attaché ? Le fichier attaché porte-t-il le bon nom ? – Avez-vous relu tout l’énoncé avant de relire votre rapport ? Une fois ces précautions minimum prises, envoyez votre mail et... bon travail pour les autres cours... 14 Bonus Votre projet est terminé lorsque vous avez fini les 4 premières étapes de l’calendrier et que le rapport est rédigé. Toutefois, sachant que parfois certaines ou certains progressent plus vite que d’autres, nous vous offrons la possibilité de gagner quelques points supplémentaires. Ce bonus doit figurer tant dans le rapport que dans le code pour vous rapporter des points. Nous vous demandons de rendre le joueur “ordinateur” plus intelligent. A vous d’essayer de le doter d’un maximum d’intelligence artificielle pour qu’il puisse nous aider à résoudre une grille. Par exemple, si une seule valeur est possible dans une ligne, colonne ou région, il devrait pouvoir la proposer. Si 2 valeurs sont possibles, il faut aussi analyser les 2 autres “directions” possibles. Cela a beaucoup plus d’importance à nos yeux d’analystes-programmeurs de réfléchir sur ces problèmes que d’avoir une “trop belle interface graphique”7 . Cela dit, n’hésitez pas à vous renseigner sur les règles élémentaires concernant les IHM. Vous ne pourrez commencer la partie bonus que lorsque nous vous en aurons donné la permission. Pour rappel, cette dernière étape n’est nullement obligatoire et elle n’a de sens que lorsque le reste est parfait ! Nous préférons nettement un code performant et un rapport clair sans bonus qu’un projet à moitié bâclé avec un semblant de résolution de bonus ! Parlons chiffres maintenant ! Nous vous offrons la possibilité de gagner jusqu’à 2 points de bonus, c’est-à-dire que nous cotons sur 22 points tout en affichant les points sur 20. Ne rêvez pas, on tronquera à 20 :). Il est évident que ce bonus n’est pris en considération que lorsque le reste vaut plus de 15/20. 15 Seconde session Pour la seconde session, qui pourrait malheureusement être nécessaire, il s’agira du même programme, coté de la même manière et toujours individuel. Venez trouver Julie Anciaux le jour de la délibération (fin juin-début juillet), elle vous dira quelles procédures vous devrez refaire. Un second rapport vous sera demandé pour le 16 août. Nous serons disponibles certains jours, mais probablement beaucoup moins que durant le semestre. Nous vous déconseillons fortement cette option :). 16 Contacts Pour les questions, privilégiez les forums de webCampus, cela permettra aux autres d’avoir aussi la réponse. Nous sommes également disponibles dans nos bureaux respectifs ou par mail ou encore par téléphone (voir page de garde). Pour être sûr de nous rencontrer dans nos bureaux, prenez rendez-vous... Bon travail 7 Si c’est ce qui vous intéresse le plus, il s’agit du travail des infographistes, qui est très bien aussi, mais dont la formation se fait ailleurs. 31 janvier 2007 Laboratoire de Développement de Programmes Page 8 sur 8.