Skip to topic | Skip to bottom
Home
Minfo
Minfo.GlooTDlong0708r1.7 - 26 Nov 2007 - 15:47 - PhilippeCollettopic end

Start of topic | Skip to actions

TP long / mini-projet GLOO (2007-2008)

PhilippeCollet

Introduction

Dans ce TP long / mini-projet, il s'agit de reprendre un certain nombre de travaux effectués lors des TP en y ajoutant quelques fonctionnalités supplémentaires.

Le projet est à réaliser par équipe de 4. Etant donné qu'une partie du projet est réalisé lors des TP, il est recommandé de former des équipes au sein même des groupes de TP. La composition des équipes doit être envoyé au chargé du cours par email avant le vendredi 22 novembre. Au dela de cette date, des pénalités sur la note seront appliquées.

Date de remise du projet : vendredi 7 décembre minuit

Un mail devra m'être envoyé (Philippe.Collet@uniceNoSpaM.fr [retirer NoSpam?]), avec le rappel des membres de l'équipe et un lien vers un site d'où je puisse le télécharger. J'enverrai un mail pour confirmer la bonne réception du projet. Si après me l'avoir envoyé vous n'avez pas de nouvelles, recontactez-moi.

Cahier des charges

Elements des TP

Le projet devra comporter

  • un fichier build.xml portable avec au moins les fonctionnalités suivantes (compilation, création d'une archive d'application, passage des tests, exécution, compilation des plugins, installation des plugins).

  • des tests unitaires sur tous les comportements de bébêtes, des TP (stupide, emergente, hasard) ainsi que les nouveaux demandés (voir plus bas). Des tests sur les champs sont aussi demandés.

Nouvelles fonctionnalités

  • Les bébêtes peuvent éventuellement changer de comportement. Leurs comportements seront gérées par un patron de conception Strategy. Elles peuvent par exemple avoir un comportement par défaut, puis varier leur comportement dynamiquement en fonction de leur environnement.

  • Un comportement Prédateur avec les fonctionnalités suivantes:
    • le prédateur est sensible aux champis, ça le ralentit momentanément.
    • le prédateur est capable de suivre une bébête pour tenter de la rattraper (donnez lui une vitesse suffisante), il peut par exemple suivre la bébête la plus proche dans son champ de vision.
    • quand le prédateur rattrape une bébête, il la mord et elle peut en mourrir (cf. point suivant). Il perd aussi un peu de vitesse, qu'il peut regagner par la suite.

  • Les bébêtes ont un nombre de points de vie. Elles en perdent si elles sont mordues ou si elles ne mangent rien pendant trop longtemps (vous pouvez faire diminuer leur point de vie en fonction de leur vitesse par exemple). Des zones de ravitaillement doivent être ajoutées en plus des champignons.

  • Une possibilité de comportement composé d'autres comportements. Ce comportement agrégé définit alors comment il décide entre ses sous-comportements. Cela devrait permettre de créer des bébêtes qui émergent tant qu'elles n'ont pas trop faim, des prédateurs qui se balladent au hasard tant qu'ils n'ont pas détecté de proies, ou même des bébêtes normales qui deviennent prédatrices si elles ont trop faim !

  • Toute bebete peut mourir si elle n'a plus de point de vie (tests junit de cet aspect à fournir) :
ATTENTION : supprimez une bébête de la liste des bébêtes dans le champ (attribut lesBebetes) provoquera vraisemblablement une ConcurrentModificationException lancée par un des itérateurs qui travaillent sur cette liste. Vous êtes face à un problème typique de concurrence. Pour le résoudre, vous devez vérouiller la liste des bébêtes pendant toute la durée de l'utilisation d'un itérateur sur cette liste :
synchronized(lesBebetes) {
  // déclaration et utilisation d'un itérateur sur la liste
  // OU opération d'ajout ou de retrait (remove pour supprimer une bébête morte par exemple)
}
Bien entendu, ceci est valable pour toute liste que vous modifieriez et qui serait en même temps parcourue par des itérateurs.

  • configuration minimales des simulations (nb de bebetes, presence ou pas de certains éléments comme les prédateurs ou les champignons) : idéalement, la configuration devra se faire en fonction des plugins chargés (voir ci-dessous), mais une version simplifiée peut aussi être implémentée dans un premier temps.

Plugins

Le projet doit posséder des plugins chargés dynamiquement en suivant l'architecture utilisée dans le TP sur le chargement dynamique. Les plugins seront des fichiers .class correctement organisés. Les plugins concernent tous les élements composant la simulation (champ, entités, comportements).

Tous les plugins seront dans un répertoire "plugins" dans le répertoire où se trouve l'application.

Distribution

Archive de l'application

Elle se composera de :

  1. Un répertoire src avec les sources
  2. Un fichier jar pour le jeu
  3. Un fichier build xml
  4. Un répertoire plugins avec à l'intérieur les fichiers .class des plugins
  5. fichier README pour expliquer vos choix de conception et quels patrons de conception sont utilisés.

Archive du plugin SDK (cf. TP sur les plugins)

Vous devrez fournir dans une archive séparée un "kit de développement de plugins" contenant le strict minimum pour que quelqu'un puisse développer ses propres plugins :

  • interfaces nécessaires, classes nécessaires.
  • Un build.xml à l'attention du développeur.

Déroulement

Etant donné que l'architecture à base de plugins est vue dans les derniers TP, vous avez tout intérêt à commencer une application avec toutes les fonctionnalités hormis les plugins, puis a la modifier.

Formation des équipes

  • Berthelon Franck, Caraccio Vincent, Ducatez Timoté, Ebling Andreas.
  • Maxime MENANT, Emeline THORIN, Laurent VANNI, Etienne VALLETTE d'OSIA.
  • Bali Rami, Chalmeton Sebastien, Galea Nicolas, Guillaume Jean-Michel.
  • Oualid Bouhlel, Ennabli Mohamed, Benouali Hamine, Klai Issam.
  • CASANOVA Pierre, El Hadj oul mohamed el hadrami, CHATTI Foued, FULCONIS Angelique.
  • Amselem Jonathan, Antonelli Paul, Ardisson Vincent, Rosati Julien.
  • FAYOL Samuel, LAFFAILLE Christophe, LE Thi Thu Ha, RICHTER Xavier.
  • PALACIN Lionel , MARTARELLO Stéphane, MARTIN Grégory, DJOHOU Sona.

-- PhilippeCollet - 26 Nov 2007
to top


You are here: Minfo > GlooTDlong0708

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback