:: Enseignements :: ESIPE :: E4INFO :: 2012-2013 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Escape-IR |
Escape-IR est un jeu de
shoot'em up
dont le scénario, c'est la coutume, tient sur un timbre poste.
La principale originalité de ce jeu est que le déplacement du vaisseau se fait en utilisant
un principe de 'gesture' que l'on exécute à la souris.
Scénario
Envoyé par le commandant Sirud pour une mission suicide sur une planète alien,
notre valeureux héros est capturé par le chef des aliens, le comte Xaroff mais s'échappe
en utilisant un vaisseau de technologie alien dont le principe de fonctionnement
exact reste un mystère pour notre héros.
Le jeu
Le but est donc de créer un jeu avec 3 missions (jupiter, moon et earth) aux graphismes différents
(que vous dessinerez vous-mêmes pour éviter les problèmes de copyrigth).
Chaque mission sera d'une difficulté supérieure à la précédente
(on vous demandera lors de la soutenance de nous faire une démonstration :)
qui devra durée entre 1 minute et 3 minutes de jeu. A la fin de chaque mission, un
Boss de fin
devra attendre notre valeureux héros. Chaque Boss devra avoir sa propre technique d'attaque.
En plus du héros et des Boss de fin de mission, le jeu devra aussi faire figurer trois autres
types de vaisseaux aux comportements différents. Enfin, le vaisseau du héros devra posséder
trois types d'armes que le joueur pourra sélectionner à l'envie.
Le système de déplacement
Comme indiqué précédemment, le vaisseau commandé par le héros utilise un principe de gesture
pour indiquer la façon dont le vaisseau va se comporter.
Une gesture est un mouvement exécuter à la souris en maintenant le doigt appuyer sur le bouton
de la souris.
Pour aider l'utilisateur lors d'une gesture, la forme dessinée par l'utilisateur sera
aussi dessinée sur l'écran. A la fin de la gesture, si celle-ci est reconnue par le programme
celle-ci s'affichera en vert ou en rouge dans le cas contraire.
L'utilisateur peut dessiner une gesture sur tout l'écran pas uniquement à coté du vaisseau
du héro.
Voici la liste des gestures que vous devez implanter
-
Left drift, un trait de bas vers le haut en diagonal vers la gauche permet
de faire déraper le vaisseau ver la gauche, le vaisseau avancera donc
légèrement vers l'avant et se décalera sur la gauche.
La longeur du trait indique pendant combien de temps le vaisseau devra déraper.
-
Right drift, même chose que le Left drift mais vers la droite.
-
Left looping, un trait décrivant un cercle dans le sens inverse des aiguilles d'une montre
fait faire un looping au vaisseau.
Comme cette maneuvre est assez efficace pour éviter les missiles
et autres vaisseaux ennemis, le trait du cercle devra se refermer à peu près
correctement et avoir la bonne taille (pas trop gros et pas trop petit).
-
Right looping, le même à droite.
-
Backoff, un trait vertical de haut vers le bas permet de faire reculer le vaisseau.
En plus de ces gestures obligatoires, vous devrez aussi inventer 3 gestures qui vous seront propres.
Le système d'armement
Lorsqu'un vaisseau ennemi est détruit, celui-ci peut faire apparaitre un bonus
qui permet de recharger les armes disponibles, chaque bonus recharge un seul type d'arme
et le nombre de recharges est affiché sur le bonus.
Les armes disponibles sont sélectionnables par l'utilisateur en haut de l'écran de jeu.
Une arme est toujours sélectionnée sauf si le vaisseau a épuisé son stock d'armes.
Le vaisseau emprunté par le héro étant un vaisseau alien, les mêmes armes
sont aussi disponibles pour les vaisseaux ennemis.
Toutes les armes marchent en deux temps. Dans un premier temps, le missile (ou autre)
se forme devant le vaisseau lorsque l'utilisateur clique sur celui-ci
puis dans un second temps, l'arme est propulsée vers les vaisseaux ennemis
en utilisant une gesture correspondant à un trait indiquant la direction
dans laquelle le missile (ou autre) doit se déplacer.
Le clique sur le vaisseau peut servir au début de la gesture
si l'utilisateur maintient son doigt appuyé sur la souris.
En fonction des armes, le missile (ou autre) peut se former instantanément,
ou alors prend un peu de temps selon que l'arme est plus puissante.
Voici la liste des armes que vous devez implanter
-
Missile: un missile qui apparait instantanément devant le vaisseau prêt à être propulsé.
-
FireBall: une boule de feu grossie devant le vaisseau que l'utilisateur peut lancer.
-
Shiboleet: une bulle qui se forme autour du vaisseau et grossit; lorsque l'utilisateur
la lance, celle-ci se sépare en plusieurs parties indépendantes les unes des autres.
En plus de ces armes obligatoires, vous devrez aussi inventer au moins une arme supplémentaire
plus puissante que celles déjà proposées.
L'écran de jeu
Le jeu est un shoot'em up avec un scrolling vertical (je ne suis pas contre un petit scrolling
utilisant plusieurs plans (layers)) et le vaisseau du joueur se situe toujours dans le tiers
inférieur de l'écran. Le haut de l'écran (oui, à l'opposé du vaisseau) doit afficher le
score ainsi que les armes disponibles sélectionnables par le joueur.
Le programme doit être écrit en utilisant deux bibliothèques externes.
-
La bibliothèque Zen 2, qui est une bibliothèque d'affichage graphique
créée uniquement pour le projet.
zen2.zip
Les sources vous sont données uniquement dans un but pédagogique,
votre projet doit utiliser le jar zen2.jar et non pas les sources.
-
La bibliothèque JBox2D,
qui est le moteur de rendu physique, c'est en fait un port d'une librairie C++ en Java.
Pour éviter les problèmes de compatibilité, vous devrez utiliser
la version disponible ici.
jbox2d-2.1.2.2.zip
Conditions de rendu
Le projet est à rendre par mail aux chargés de TD et à l'enseignant de cours,
au plus tard le 17 novembre à 23h59. Le format de rendu est une archive au format
zip (tout rar, tar.gz, 7z et autre ne sera pas ouvert) contenant:
- un répertoire src contenant les sources du projet et les
éventuelles ressources (images, sons, etc.) à recopier à
côté des classes;
- un répertoire docs contenant le manuel de l'utilisateur
(user.pdf) et le manuel qui explique votre architecture
(dev.pdf) au format PDF;
- un répertoire classes vide dans l'archive et qui contiendra les classes une fois compilées
- un jar exécutable robot-master-mind.jar qui fonctionne avec java
-jar robot-master-mind.jar et donc qui possède un fichier manifest adéquat;
- un build.xml qui permet de
- compiler les sources (target compile)
- créer le jar exécutable (target jar)
- générer la javadoc dans docs/doc (target javadoc)
- nettoyer le projet pour qu'il ne reste plus que les éléments
demandés (target clean)
- un répertoire lib contenant les bibliothèques (imposées) dont a besoin votre projet pour fonctionner.
Cette archive Zip (attention à l'encodage) aura comme nom Nom1Nom2_EscapeIR.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_EscapeIR 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
- Cas de 0 sans aucune correction (Mort subite):
- projet non effectué en binôme (i.e. 2 personnes !) sans l'accord préalable de l'intervenant de TD
- projet envoyé après la date
- projet non envoyé à TOUS les chargés de TDs et le chargé de cours (AUX BONNES ADRESSES !)
- mail ne contenant pas les noms et prénoms de chacun des membres du binôme
- réception d'une archive qui n'a pas comme nom Nom1Nom2_EscapeIR.zip,
où les noms sont ceux des membres du binôme par ordre alphabétique
- fichier d'archive dont l'extraction ne produit pas un répertoire dont le nom est Nom1Nom2_EscapeIR
- fichier d'archive foireux (vérifiez-le et mettez-vous en copie du mail)
- l'absence de javadoc, ou javadoc pas en anglais
- Base de la notation:
- la notation ne dépendra pas que de l'aspect visuel du projet
- la propreté et la lisibilité du code auront un poids très important dans la note
- l'architecture que vous aurez définie (interfaces, classes abstraites, concrètes ...) devra être donnée dans les documents
PDF et aura également un poids très important dans la note
- la réutilisabilité et donc la factorisation de votre code (e.g. peut-on facilement créer des nouveaux plateaux,
par exemple, sans tout refaire dans votre code)
- la présence de code inutile
- les différents rapports et, par conséquent, l'orthographe !
- la soutenance qui aura lieu le 19 Novembre
© Université de Marne-la-Vallée