Réalisation d’un Jeu d’Aventure
Devoir de Programmation Orientée Objet
DEUG MIAS 2 *


18 février 2005

*M. Champesme - Département d’Informatique - Institut Galilée

1 Le jeu

Votre tâche consiste à inventer et implémenter un jeu d’aventure. Comme point de départ, vous pouvez utiliser le logiciel Zork que vous trouverez à l’adresse :
http://marc.champesme.free.fr/POO/devoir/MIAS2-2004-2005/zorkfr1802.tar.gz
Zork est un jeu très rudimentaire qui permet juste de se déplacer dans quelques pièces.

Avant toute chose, il est important de lire le code existant (au moins en partie) et d’essayer de comprendre ce qu’il fait. Dans un deuxième temps, afin d’améliorer votre compréhension du code apportez quelques modifications au code du jeu. Par exemple :

2 Première partie : amélioration du logiciel Zork

Date limite : Cette première partie du travail doit être rendue à votre enseignant (chargé de TD/TP) lors de la séance de TP no6 (semaine du 14 au 18 mars).

2.1 Travail à faire

En partant du logiciel fourni, vous devez ajouter toutes les fonctionnalités suivantes :

  1. Certaines pièces contiennent des objets. Chaque pièce peut contenir un nombre arbitraire d’objets. Certains objets peuvent être emportés par le joueur, d’autres non.
  2. Le joueur peut transporter des objets avec lui. Chaque objet a un poids. Le joueur ne peut transporter des objets que dans la mesure où le poids total des objets transportés ne dépasse pas une certaine limite fixée à l’avance.
  3. Le joueur peut gagner. Certaines situations doivent pouvoir être reconnues comme des situations gagnantes dans lesquelles le joueur sera averti qu’il a gagné.
  4. Implémentez une commande “retour” qui fait revenir le joueur dans la pièce précédemment visitée.
  5. Ajoutez au moins quatre nouvelles commandes (en plus de celles déjà présentes dans le code qui vous est fourni).

2.2 Travail à rendre

Vous devez rendre une disquette contenant le code source (i.e. les fichiers .java) de l’ensemble des classes constituant votre projet ainsi qu’un bref rapport indiquant les modifications apportées au logiciel :

Tout votre code doit être de qualité “professionelle” (commentaires complets au format javadoc pour toutes les classes et toutes les méthodes de chaque classe, indentation du code, choix réfléchi des identificateurs...).

3 Deuxième partie : création d’un nouveau jeu

3.1 Inventez votre propre version du jeu

Tout d’abord, vous devez décider quel est le but de votre jeu. Ce devrait être quelque chose du genre : Vous devez trouvez certains objets et les apporter dans une certaine pièce (ou à une certaine personne). Ensuite vous pouvez ramasser d’autres objets et si vous les amenez dans une autre pièce, vous gagnez.

Par exemple : Vous êtes étudiant à l’université Paris 13. Vous devez trouver votre salle de TP. Pour la trouver, vous devez vous rendre au secrétariat pour vous renseigner. A la fin du jeu, vous devez trouver la salle d’examen. Si vous y arrivez à temps, que vous avez récupéré un support de cours sur votre chemin et que vous avez assisté au cours, au TD et au TP, alors vous gagnez. Cependant, si vous êtes passé plus de cinq fois à la cafétéria, vous n’aurez que la moitié des points à l’examen.

Ou bien : Vous êtes perdu dans un donjon. Vous rencontrez un gnome. Si vous trouvez quelque chose de comestible à lui offrir, il vous indiquera où trouver une baguette magique. Si vous utilisez la baguette magique dans la salle des banquets, la sortie s’ouvre, vous sortez et vous gagnez.

En fait, vous êtes entièrement libre dans la définition de votre jeu. Pensez au lieu dans lequel se déroulera votre jeu, déterminez à quoi correspondront les pièces. Imaginez les objets, les personnages ou les monstres qui peupleront les lieux. Définissez la mission que devra accomplir le joueur... Essayez de rendre votre jeu intéressant, mais ne le rendez pas trop compliqué.

3.2 Implémentez votre version du jeu

Une fois les caractéristiques de votre jeu définies, la phase d’implémentation peut commencer. Cette seconde partie du travail pourra indifféremment se baser sur le travail déjà effectué dans la première partie ou bien donner lieu à la réalisation d’un logiciel totalement nouveau. Dans tous les cas, le logiciel final devra posséder, au minimum, toutes les fonctionnalités (i.e. les fonctionnalités de base et les fonctionnalités avancées) présentées ci-après.

3.2.1 Fonctionnalités de base

Votre jeu doit implémenter les fonctionnalités de base ci-après (si vous réutilisez le logiciel fourni cette première partie du travail aura déjà été réalisée pour la première partie du devoir) :

  1. Le jeu comporte plusieurs pièces.
  2. Le joueur peut se déplacer d’une pièce à l’autre.
  3. Certaines pièces contiennent des objets. Chaque pièce peut contenir un nombre arbitraire d’objets. Certains objets peuvent être emportés par le joueur, d’autres non.
  4. Le joueur peut transporter des objets avec lui. Chaque objet a un poids. Le joueur ne peut transporter des objets que dans la mesure où le poids total des objets transportés ne dépasse pas une certaine limite fixée à l’avance.
  5. Le joueur peut gagner. Certaines situations doivent pouvoir être reconnues comme des situations gagnantes dans lesquelles le joueur sera averti qu’il a gagné.
  6. Implémentez une commande “retour” qui fait revenir le joueur dans la pièce précédemment visitée.
  7. Ajoutez au moins quatre nouvelles commandes (en plus de celles déjà présentes dans le code qui vous est fourni).

3.2.2 Fonctionnalités avancées

Une fois les fonctionnalités de base implémentées, vous pouvez passer aux choses sérieuses :

  1. Ajoutez à votre jeu des êtres animés. Les êtres animés (personnages, animaux, monstres...) sont des entités capable de se déplacer. Comme les objets ou le joueur, les êtres animés sont localisés dans des pièces, mais à la différence des objets, les êtres animés peuvent se déplacer de leur propre initiative.
  2. Etendez l’analyseur syntaxique afin qu’il puisse reconnaître des commandes formées de trois mots. Vous pourriez, par exemple, avoir une commande
    donner pain gnome
    permettant de donner du pain (que vous transportez avec vous) au gnome.
  3. Ajoutez une pièce de téléportation : chaque fois que le joueur pénètre dans cette pièce il est téléporté dans une autre pièce choisie au hasard.

Vous pouvez aussi imaginez d’autres fonctionnalités avancées, mais, dans ce cas, vous devrez en discuter avec votre enseignant et obtenir son approbation avant de les implémenter. Votre enseignant vous avertira alors s’il considère que cette fonctionnalité est trop complexe ou bien demande trop de travail.

3.3 Travail à rendre

Date limite : Cette deuxième partie du travail doit être rendue à votre enseignant (chargé de TD/TP) lors de la séance de TP no12 (semaine du 16 au 20 mai).

Vous devez rendre le code source de l’ensemble des classes constituant votre projet ainsi qu’un rapport.

3.3.1 Code source

Vous devez rendre une disquette contenant le code source (i.e. les fichiers .java). Tout votre code doit être de qualité “professionelle” (commentaires complets au format javadoc et assertions pour toutes les classes et toutes les méthodes de chaque classe, indentation du code, choix réfléchi des identificateurs...). Votre code sera évalué entre autre sur :

3.3.2 Rapport

Vous devez aussi rendre un rapport contenant :