Cours de Programmation Orientée-Objet Énoncé du

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