Cours de Programmation Orientée-Objet Énoncé du travail Année académique 2013-2014 Ce travail doit être rendu sous la forme d’un programme source Java, transmis par courrier électronique à [email protected] pour le mercredi 23 avril à 23h59 au plus tard. Les travaux rendus en retard et/ou ne respectant pas les consignes ne seront pas corrigés. Les travaux plagiés sont sanctionnés (voir http: // www. ulg. ac. be/ plagiat ). Le Rush Hour est un jeu dont le principe est le suivant : un parking est rempli de voitures et de camions mal garés. Une voiture rouge doit sortir de ce parking. Le but du jeu est de déplacer les éléments lui faisant obstacle de telle manière à ce qu’elle puisse atteindre la sortie. Le plateau de jeu est de taille 6×6 et il est possible d’y placer au maximum 12 voitures (occupant 2 cases) et 4 camions (occupant 3 cases). Précisons que chaque élément du plateau peut être positionné verticalement (ce qui autorise des déplacements vers le haut et vers le bas) ou horizontalement (ce qui autorise des déplacements vers la gauche et vers la droite). Enfin, la sortie se situe toujours vers la dernière case de la 3ème ligne. Exemple de plateau de jeu (source : http://www.montefiore.ulg.ac.be/~hiard) Travail demandé On demande d’écrire un programme Java permettant de jouer à Rush Hour. Votre programme doit donc offrir à son utilisateur la possibilité de jouer une partie, mais on demande également qu’il permette d’annuler une action et de revenir en arrière jusqu’à l’état initial de la partie, que l’on puisse directement recommencer la partie, et que le nombre de déplacements effectués soit comptabilisé. L’affichage graphique et les interactions avec l’utilisateur sont gérés par l’intermédiaire d’une classe présente dans une bibliothèque de classes qui sera diffusée plus tard sur le site des répétitions. Bien que ces deux tâches ne soient pas votre responsabilité, votre programme doit être capable de réagir aux demandes émises par l’utilisateur au travers de l’interface graphique fournie (comme par exemple, une demande de déplacement d’une pièce, l’annulation d’une action, etc). Enfin, une nouvelle partie doit pouvoir être initialisée en lisant un fichier qui décrit l’état initial du plateau de jeu. Format de fichiers Un fichier représentant l’état initial d’une partie est construit sous la forme d’un fichier texte possédant un tableau d’éléments de taille 6×6. Les valeurs acceptées pour chaque élément sont les suivantes : 0 (zéro : aucune pièce à insérer sur la case courante), V (insérer une voiture verticale sur la case courante), W (insérer une voiture horizontale sur la case courante), C (insérer un camion vertical sur la 1 case courante), D (insérer un camion horizontal sur la case courante). Par exemple, le plateau de jeu illustré dans la première page se traduit par : D V 0 W 0 0 0 W 0 0 V 0 0 0 W V 0 W V 0 0 0 0 0 C 0 0 0 W W V 0 0 0 0 0 Au cours de la lecture, chaque élément différent de 0 (zéro) doit se voir attribuer un identifiant entier et incrémental (le premier identifiant doit être égal à 1). Bibliothèque de classes La bibliothèque de classes sera fournie sous la forme d’un fichier graphics.jar 1 disponible sur le site des répétitions, contenant des classes d’exceptions et une classe d’affichage, sous forme compilée (en d’autres termes, le code source de ces classes ne sera pas disponible). En revanche, une interface implémentée par la classe d’affichage est disponible sous la forme d’un fichier .java et c’est par l’intermédiaire de celle-ci que vous pourrez interagir avec la classe d’affichage. De plus, une interface supplémentaire que l’une de vos classes devra implémenter afin de recevoir et traiter les demandes issues de l’utilisateur est également fournie sous la même forme. Les différentes spécifications de cette bibliothèque vous seront distribuées prochainement dans une annexe à l’énoncé, au format papier et sur le site des répétitions. Organisation du programme On demande que chaque classe de votre programme se trouve dans le groupe de classes be.ac.ulg.montefiore.oop. Si vous désirez créer des groupes de classes supplémentaires à l’intérieur de ce dernier, veillez à ne pas utiliser be.ac.ulg.montefiore.oop.graphics, celui-ci étant déjà réservé par la bibliothèque de classes fournie. On impose également le fait que la méthode main se situe dans une classe appelée Main présente dans le groupe de classes par défaut. Exécution du programme On demande qu’un argument soit obligatoirement transmis au programme afin que celui-ci puisse s’exécuter. Cet argument doit spécifier l’emplacement du fichier décrivant l’état initial de la partie à jouer. Si aucun argument ou plusieurs arguments sont transmis au programme, un message informant l’utilisateur de la manière correcte d’utiliser le programme doit être affiché sur le flux d’erreurs et l’exécution doit alors se terminer. Certains exemples d’exécutions seront disponibles sur le site des répétitions. Avant d’envoyer votre programme, vérifiez que ce dernier est capable de les exécuter correctement et efficacement. Critères d’évaluation Outre le fait que le programme doit pouvoir être compilé et fonctionner correctement, l’utilisation judicieuse des mécanismes offerts par le paradigme orienté-objet, l’architecture des différentes classes implémentées et le respect des consignes ont une place importante dans l’évaluation du projet. Il est également possible que le programme soit testé dans des situations d’erreur afin de vérifier si le mécanisme d’exceptions est correctement utilisé. Afin d’éviter toute mauvaise surprise lors de la correction, assurez-vous que votre programme répond à toutes ces exigences en le testant sur les ordinateurs du réseau 8. Modalités de remise Le programme doit être rendu sous la forme d’une archive ZIP intitulée oop_nom_prenom.zip où le nom et le prénom ont été substitués. Cette dernière doit être envoyée dans un message dont le sujet est « [OOP][2014] Nom Prénom » où le nom et le prénom ont été substitués. À l’intérieur de l’archive doivent se trouver à la racine : – Un fichier Apache Ant build.xml ou un Makefile (au choix). – Un dossier src où se trouvent les sources de votre programme. – Le fichier graphics.jar fourni avec le projet à la racine. Note L’utilisation de Swing et/ou AWT est interdite ! 1. La procédure à suivre pour travailler avec un tel fichier sera expliquée en répétition. 2
© Copyright 2025 ExpyDoc