Programmation orientée objet - Projet

Transcription

Programmation orientée objet - Projet
Programmation orientée objet
L2 MPCIE
Projet
Fourmi de Langton
Fourmi de Langton
La fourmi de Langton est un automate représentant une fourmi qui se déplace dans une grille. Les cases de la grille peuvent être blanches ou noires. Sur l'une de ces cases se trouve la fourmi. La fourmi se déplace selon les règles suivantes :
•
Si la fourmi est sur une case noire, elle change la couleur de la case en blanc, puis elle se déplace sur la case située à sa droite.
•
Si la fourmi est sur une case blanche, elle change la couleur de la case en noir, puis elle se déplace sur la case située à sa gauche.
Lorsqu'une fourmi arrive dans une bordure, c'est­à­dire qu'elle sort de la grille, on considère que la fourmi est morte et elle disparaît de la grille.
Il existe des variantes de l'automate dans lesquels il y a plusieurs fourmis qui peuvent se chevaucher (c'est­à­
dire qu'il peut y en avoir plusieurs sur la même case) et rencontrer des cases qui ont été noircies par d'autres fourmis.
Sujet du projet
Le projet consiste à réaliser une version modifiée de la fourmi de Langton. En plus de la fourmi classique (rouge) on ajoute d'autres types de fourmis.
•
Une fourmi inverse (bleue) se comporte à l'inverse de la fourmi classique : elle tourne à gauche sur une case noire et à droite sur une case blanche mais colore les cases comme la fourmi classique.
•
Une fourmi réplicante (verte) se multiplie lorsqu'elle sort de la grille en quatre exemplaires de fourmis de types choisis aléatoirement parmi les différents types de fourmis possibles. Les quatre nouvelles fourmis sont placées au centre et dans quatre directions différentes. Les fourmis réplicantes se déplacent en ligne droite et ne modifient pas la couleur des cases.
L2 MPCIE – Programmation orientée objet
Projet
1/2
•
•
Une fourmi aléatoire se déplace de manière complètement aléatoire : elle choisit au hasard d'aller à gauche, à droite, tout droit ou bien en sens inverse. Il existe deux types de fourmis aléatoires qui se comportent différemment lorsqu'elles sont sur une case noire :
◦
la fourmi semi­aléatoire (orange) se déplace toujours à droite sur une case noire et inverse la couleur des cases comme la fourmi classique (noires ou blanches) ;
◦
la fourmi gomme­aléatoire (jaune) transforme uniquement les cases noires en cases blanches.
Une fourmi cannibale (violette) mange toutes les fourmis qu'elle croise. Elle se comporte comme la fourmi classique en terme de déplacement et de coloration.
Pour pouvoir voir cette grille évoluer en direct, une interface graphique affichera la grille étape par étape. Cette interface doit permettre de créer une grille à partir d'une hauteur et d'une largeur définie par l'utilisateur et de simuler la fourmi de Langton. Les fourmis et leurs directions doivent être représentées graphiquement. Si deux fourmis ou plus sont présentes sur la même case, vous pouvez n'en afficher qu'une seule.
Initialement, la grille ne comporte que des cases blanches et les fourmis (au moins une de chaque type) sont placées aléatoirement sur la grille.
Voici un exemple d'interface pour la fourmi classique de Langton :
Questions bonus :
•
à la création d'une grille, on peut spécifier la répartition des différents types de fourmis ;
•
l'interface permet de configurer l'aspect visuel de la grille (taille, couleurs des fourmis, …) ;
•
un mode automatique passe d'une étape à l'autre à intervalle régulier (éventuellement paramétrable) ;
•
vous pouvez créer vos propres types de fourmis.
Remise du projet
Le projet est à réaliser en binôme. Il faudra fournir un bref rapport de quelques pages (au moins 2) dans lequel vous expliquerez :
•
les différentes classes que vous avez créées en expliquant les héritages éventuels ;
•
une documentation (Javadoc) de vos classes et méthodes ;
•
vos choix d'implémentation ;
•
les difficultés que vous avez rencontrées ;
Le projet est à rendre pour la semaine du 21 avril pour votre séance de TP habituelle. Il devra être contenu dans une archive (.zip ou .tar.gz) qui contiendra le code source de vos différentes classes Java (fichiers .java) et votre rapport. Il faudra fournir une version imprimée de ce rapport le jour de la présentation du projet.
L2 MPCIE – Programmation orientée objet
Projet
2/2

Documents pareils