Il s'agit de réaliser un version simple d'un jeu d'aventures qui a fait fureur dans les années 80 sur les réseaux de machines Unix: Rogue. Vous trouverez plus d'informations sur ce jeu en allant consulter http://www.wichman.org/roguehistory.html ou en consultant http://www.nethack.org/ pour un de ses descendants.

Le jeu se déroule dans un univers en deux dimensions. L'univers est composé de grilles ou cartes. Chaque lieu occupe une position sur une grille particulière et quelques caractéristiques fondamentales à implémenter : zone d'occupation de ce lieu dans la grille, place des entrées et des sorties de ce lieu, type du lieu (salle, couloir, mur, forêt, etc.). Selon le type du lieu, certains attributs spécifiques seront ajoutés : case piégée, portes, escaliers, case inondée, sol meuble, etc.

Chaque carte est créée aléatoirement en y disposant des lieux de toutes sortes. La première carte devra disposer au moins d'une sortie vers une nouvelle carte. Une carte n'est créée qu'au moment où l'on y accède; on devra faire attention à ce que les cartes créées ne se ressemblent pas trop. L'ensemble des cartes devra toujours posséder une case de sortie vers une carte non-explorée.

Les objets sont de deux types : animés ou inanimés. Les caractéristiques fondamentales diffèrent selon le type :

  • objet inanimé : nom et type (arme, habit, nourriture), poids (pour savoir si on peut le porter), caractéristiques spécifiques (en fonction de l'usage)
  • objet animé : nom et type (monstre, oiseau, etc.), points de vie, caractéristiques spécifiques.

Lorsqu'une carte est créée, il faut placer des objets dessus.

L'affichage pourra éventuellement se faire dans un premier temps en mode texte, de manière similaire au programme Rogue original.

Selon les performances attendues, il est aussi possible de réaliser un affichage assez simple en 2D à l'aide de la bibliothèque Swing. Dans tous les cas, il faudra soigneusement décorréler le moteur du jeu des primitives d'affichage.

Le jeu consiste ensuite à prendre le contrôle du personnage (objet animé) et à se déplacer dans les cartes en interagissant avec les autres objets qui s'y trouvent. Le joueur peut se déplacer, ou encore prendre, poser, attaquer, etc. Il faut ensuite choisir les actions de tous les autres objets animés présents.

Il est évident que la réalisation d'un jeu complet peut s'avérer beaucoup trop longue. On s'attachera donc particulièrement à la modélisation du problème. La réalisation en couches successives devra garantir l'obtention d'une succession de programmes viables dont les fonctionnalités seront augmentées progressivement et toujours de manière consistante.