:: Enseignements :: Master :: M1 :: 2012-2013 :: Java Avancé ::
[LOGO]

RoboMasterMind


Il existe sur le web un logiciel nommé RoboMind qui permet d'apprendre la programmation en bougeant un robot à l'aide d'un petit langage informatique.
http://www.robomind.net/en/index.html
Le but de ce projet est de créer votre propre version de ce programme de façon à ce qu'un enfant de 8 ans puisse jouer avec.

Base de départ

Pour vous aidez, nous vous fournissons une archive zip contenant un parser de code pour le langage utilisé par RoboMasterMind (donc vous n'avez pas besoin de le ré-écrire) ainsi qu'un exemple succint d'interface graphique permettant d'afficher un programme et une zone de dessin dans lequel le robot est censé évoluer. robomastermind.zip.

Déroulement du programme

Comme indiqué précédemment, le but du programme est de faire évoluer un robot dans un environnement graphique en exécutant un script.
Une description du langage et de ces possibilités se trouve à l'adresse suivante, le langage de RoboMind. Seul les 3 premiers liens sont intéressant, il ne vous ait pas demander de coder la partie correspondant à l'export de script vers les robots Lego MindStorm.
Votre programme doit être capable d'exécuter l'ensemble des scripts que le programme RoboMind est capable d'exécuter. Pour vous faire une idée, vous pouvez télécharger une version gratuite du programme RoboMind Download.
Il ne vous ait pas demander de re-créer l'ensemble des fonctionnalités graphiques de l'interface de RoboMind, cela vous prendra trop de temps.
Voici l'ensemble des fonctionnalités que vous devez fournir.
  • Charger et sauvegarder un script sur le disque dur en indiquant le fichier choisi.
  • Editer un script script dans l'interface, les mot-clés et fonction prédéfinies doivent être coloré (comme sous eclipse) et optionnellement, proposer la completion avec CTRL + SPACE.
  • Charger un environnement graphique, un plateau, permettant de faire évoluer le robot, vous devez par défaut founir 3 plateaux (et deux scripts pour chaque plateau). Il est interdit d'utiliser les ressources graphiques (images, etc.) provenant du logiciel RoboMind, à vous de les créer vous même.
  • Placer le robot dans l'environnement graphique à la souris ou au clavier.
  • Lancer un script et voir le robot effectuer les mouvements correspondant. Il devra être possible d'arréter le robot car l'icone 'start' de lancement doit se transformer en icone 'stop' lorsque le script tourne.
  • Améliorer la signalisation des erreurs qui sont affichés lorsque l'utilisateur édite le script. Les messages d'erreur doivent être en francais et les erreurs doivent être signalées dans la partie qui affiche le script (par exemple en soulignant les erreurs comme Eclipse ou Word).
  • La compilation du script doit se faire en tâche de fond (cf plus bas).
  • Optionnellement, un éditeur visuel de plateaux de jeu.
Tous ajouts d'autre fonctionnalités ne sera pas considéré tant que les fonctionnalités ci-dessus n'aurount pas été implantées.

En tâche de fond

L'exemple de code qui vous ai proposé à un serieux problème, à chaque fois que l'utilisateur change une partie du script, le script est re-parser complètement par la thread qui gère l'interface graphique. Hors c'est la même thread qui gère le raffraichissement graphique donc si le script est long, le parser risque de mettre beaucoup de temps et pour l'utilisateur, l'application sera figée.
Il faut donc faire le parsing en tâche de fond, dans une thread séparée en applicant les principes de la programmation concurrente.
Piste de réflexion, aller voir les classes SwingWorker, EventQueue et le tutoriel suivant.
Note, cette partie de code est sufffisamment compliqué pour que si deux codes fonctionnent de la même façon, je trouverai cela louche.

Conditions de rendu

Le projet est à rendre par mail aux chargés de TD et à l'enseignant de cours, au plus tard le 31 décembre à 23h59. Le format de rendu est une archive au format zip (tout rar, tar.gz, 7z et autre ne sera pas ouvert) contenant:

Cette archive Zip (attention à l'encodage) aura comme nom Nom1Nom2_RoboMasterMind.zip, où les noms sont ceux des membres du binôme par ordre alphabétique. L'extraction de cette archive devra créer un répertoire de nom Nom1Nom2_RoboMasterMind pour contenir tous les éléments demandés ci-dessus. Elle sera envoyée par mail aux enseignants de la matière, avec dans le corps du message les noms et prénoms de chacun des membres du binôme.

Notation