:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: Java Avancé ::
[LOGO]

GalaxIR


Le but de ce projet est de réaliser un jeu proche du jeu GalCon (pour Galactic Conquest). Le jeu se déroule dans une galaxie en proie à la guerre planétaire et met en scène des vaisseaux en masse parcourant la carte à la recherche de planètes à conquérir jusqu'à l'anéantissement de vos adversaires. C'est un Risk en temps réel. Chaque planète fabrique un certain nombre d'unités par seconde. A vous de les envahir pour dominer l'univers!

Bibliothèque graphique

Le projet est à réaliser avec la bibliothèque graphique fr.umlv.remix. C'est cette bibliothèque qui doit être utilisée pour prendre en charge toute la partie graphique.

Il n'est pas autorisé de gérer l'affichage graphique par un autre moyen.

Déroulement du jeu


La galaxie contient les éléments suivant:
  • une planète d'origine par joueur;
  • un ensemble de planètes neutres;
  • des zones "libres" (i.e. l'espace).

Les acteurs du jeu sont des vaisseaux - de différents types et ayant des caractéristiques fixées (e.g. vitesse, temps de production, puissance d'attaque) - produits par les planètes contrôlées par un joueur.

Chaque joueur possède initialement une planète. Toutes les planètes - exceptées les neutres - peuvent produire des vaisseaux. Le taux de production de chaque planète est fixé à la création de cette dernière. Il peut être variable d'une planète à une autre et ne dépend pas uniquement de la taille de cette dernière. A tout moment du jeu, seules les planètes que vous contrôlez peuvent produire vos vaisseaux.

Le jeu consiste à déplacer vos vaisseaux de planète en planète. Pour ce faire, il suffit de sélectionner une ou plusieurs planètes "sources" et une planète de destination. Une fois l'ordre émis, une partie (en nombre contrôlable) des vaisseaux décolle de vos planètes "sources" pour aller sur la planète de destination. Pendant que vos vaisseaux se déplacent à l'écran, vos planètes continuent de produire de nouveaux vaisseaux.

Lorsqu'un vaisseau atteint une planète,
  • soit elle est à vous et c'est juste un mouvement de troupes (sa réserve de vaisseaux est alors incrémentée de 1);
  • soit elle n'est pas à vous et c'est une attaque (sa réserve de vaisseaux est alors décrémentée de 1 ou de la puissance d'attaque du-dit vaisseau);
  • si la planète est neutre ou contrôlée par votre adversaire et sa réserve est nulle (lors de l'attaque), la planète est conquise et devient vôtre. Elle se met à produire des vaisseaux du même type que celui qui en a permis la conquête.

Tout joueur ne contrôlant plus de planète perd la partie (règle valable pour tout nombre de joueurs). Le jeu s'interrompt lorsqu'il n'y a plus qu'un seul joueur.

Contraintes du jeu à respecter

Toutes les planètes peuvent produire et envoyer des vaisseaux à l'exception des planètes neutres qui jusqu'à leur conquête ne peuvent qu'utiliser leur réserve de vaisseaux à titre défensif. A un instant donné, toute planète ne peut produire qu'un seul type de vaisseaux.

L'envoi de vaisseaux doit être fait par diffusion (pas de gros paquet) en profitant au mieux du périmètre couvert par la planète émettrice. Par conséquent, le décollage d'un grand nombre de vaisseaux sur une petite planète peut nécessiter plusieurs vagues de décollages. Les vaisseaux envoyés par un unique ordre compose un escadron. Il doit être possible de diriger tout un escadron (ou ce qu'il en reste).

Lors des déplacements, les collisions entre les vaisseaux ne doivent pas être gérées (i.e. il peut y avoir plus d'un vaisseau à une même position). D'autre part, un vaisseau devant atteindre une planète donnée ne devra ni survoler, ni rentrer en collision avec une autre planète. Pour ce faire, vous devrez mettre en place un algorithme de déplacement permettant le contournement des planètes non visées.

Mode d'interactions sur le jeu

Il vous est demandé de mettre en place une interaction à la souris avec le jeu qui peut s'accompagner de l'utilisation simultanée des touches gérées par la bibliothèque graphique (à savoir; CTRL, SHIFT, ALT-GR). Vous avez également la possibilité d'interagir avec le jeu par l'utilisation du clavier; cette utilisation est limitée comme indiqué dans la javadoc de la bibliothèque graphique.

Fonctionnalités

Ce qu'on attend au moins de vous

Il vous est demandé de fournir une implémentation fournissant au moins les fonctionnalités suivantes:

Pour aller plus loin

Vous pouvez apporter d'autres fonctionnalités rendant votre jeu un peu plus intéressant. Ces ajouts ne seraient compenser des manques dans les fonctionnalités attendues et sont, par conséquent, des bonus non compensatoires du minimum attendu.

Quelques idées en vrac à s'approprier: plus de 2 joueurs (mais un seul humain), des vaisseaux pirates (sans propriétaire et frappant au hasard), des planètes malades (dont la production n'est pas constante), des vaisseaux annihilateur (détruisant une planète - en modifiant sa forme, sa taille - plutôt que de la conquérir), ...

Conditions de rendu

Le projet est à rendre par mail aux chargés de TD et à l'enseignant de cours, pour la date fixée par l'agenda des projets. 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 aura comme nom Nom1Nom2_GalaxIR.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_GalaxIR 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

Quelques captures d'écran du jeu GalCon




FAQ

Binômes