:: Enseignements :: Licence :: L3 :: 2017-2018 :: Programmation Objet avec Java ::
[LOGO]

Wall-J: the Space Cleaner


Le but de ce projet est de fabriquer un jeu dont le but est de nettoyer l'écran des détritus se trouvant dessus en les rangeant dans les poubelles situées sur les bords de l'écran. Pour cela, l'utilisateur commande un petit robot Wall-J qui va poser trois bombes sur l'écran. Lorsque les bombes exploseront, le souffle des explosions poussera l'ensemble des détritus dans les poubelles.

Condition de rendu

Ce projet est à faire par binôme (2 personnes, ni 1 ni 3) et doit être déposé au plus tard le dimanche 4 février 2018 à 23h59 sur e-learning.

Une soutenance "bêta" aura lieu le lundi 15 janvier 2018 (l'horaire vous sera précisé). Votre travail sera noté mais vous pourrez tenir compte des remarques pour améliorer votre projet jusqu'au rendu final.

Cahier des charges

  1. Les tableaux
    Le jeu est composé de plusieurs tableaux, comme Angry Birds. Le but est de ranger les détritus d'un tableau pour avoir le droit de passer au tableau suivant. Si un des détritus n'est pas rangé, alors le tableau n'est pas fini : l'utilisateur doit recommmencer et résoudre le tableau avant de pouvoir passer au tableau suivant.
    Chaque tableau est spécifié dans un fichier au format texte dans un fichier level.txt : level0.txt pour le premier niveau, level1.txt pour le second, etc. Un utilisateur pourra aussi créer ses propres niveaux.
    Voici un exemple de tableau très simple.
              WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
              W                                                        W
              T                                                        T
              T                                                        T
              T                                                        T
              T             G                                          T
              T             G                                          T
              T             G                                          T
              T                                                        T
              T                                                        T
              T                                                        T
              W                                                        W
              WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
            

    Dans ce tableau, il y a 3 détritus (G), avec des poubelles disposées à gauche et à droite (T), le reste étant des murs (W).
               W: wall, T: trash can, G: garbage 
             

    Le programme devra vérifier qu'un tableau est valide, c'est-à-dire vérifier que les bords du tableau sont bien constitués de W ou de T. Le tableau peut être de taille variable suivant les niveaux.
  2. Poser les bombes
    La première phase de jeu consiste à poser des bombes sur l'écran. Pour ce faire, l'utilisateur controle Wall-J à la souris et lui indique, en cliquant sur l'écran, où il doit se positionner. Wall-J se déplace alors à l'endroit indiqué en évitant les détritus, les murs et les poubelles.
    On vous demande pour cela de programmer l'algorithme A* [wikipedia] pour permettre à Wall-J de se déplacer sans rentrer dans les obstacles.
    La touche RETURN permet de poser une bombe ; si l'on appuie plusieurs fois d'affilée sur RETURN au même emplacement, on incrémente un compteur qui va indiquer le délai (en secondes) avant que la bombe n'explose. Cela permet, lorsque toutes les bombes sont posées, de faire exploser celles-ci avec des délais différents.
  3. Affichage
    Pour l'affichage, on vous demande d'utiliser la bibilothèque Zen 5.
  4. Explosions
    Une fois toutes les bombes posées, une animation fait disparaître Wall-J, ce afin qu'il se cache. Puis le compteur de chaque bombe se décrémente, et dès qu'un compteur atteint zéro, la bombe associée explose et pousse les détritus. Les détritus peuvent rebondir sur les murs et disparaissent s'ils touchent une poubelle. Si, à la fin des explosions, tous les détritus ont disparu dans les poubelles, le tableau est gagné et l'utilisateur peut passer au tableau suivant.
    Pour gérer la partie physique des explosions et des mouvements des détritus, on vous demande d'utiliser la bibliothèque JBox2D 2.2.1.1 sous forme d'un jar (pour vous aider, voilà la doc et le code source).
  5. Amélioration possibles
    Attention, les autres parties du jeu devront être finies avant que vous commenciez à considérer les améliorations suivantes :
    • ajouter des murs particuliers qui accélèrent les détritus lorsque ceux-ci rebondissent sur le mur ;
    • ajouter des bombes qui implosent au lieu d'exploser ;
    • ajouter un timer qui oblige à placer les bombes assez rapidement.

    Toute autre amélioration sera considérée négativement.

Références

Ant Manual
How to create an executable jar ?.
JavaDoc spec
Les entrées/sorties sur fichier

Conditions de rendu

Le projet est à rendre au plus tard le 4 février 2018 à 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_WallJ.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 Nom1_Nom2_WallJ pour contenir tous les éléments demandés ci-dessus.

Notation