Mini-projet GL (2012-2013)

PhilippeCollet

Introduction

Le projet est à réaliser par équipe de 4. La composition des équipes doit être envoyée au chargé du cours par email avant le mercredi 28 novembre. Au dela de cette date, des pénalités sur la note seront appliquées.

Toute ambiguïté que vous pourrez trouver dans ce sujet devra être résolu en posant des hypothèses de travail raisonnables et documentées.

Date de remise du projet pour le lundi 14 janvier 2013, 23h59 au plus tard

ALERT! Date repoussée du mercredi 9 janvier au lundi 14 janvier 2013, 23h59 au plus tard

Un mail devra m'être envoyé, 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.

Fonctionnalités attendues

Il y a 3 fonctionnalités à réaliser. Les deux premières peuvent être réalisées avant le dernier TD.

Une classe utilitaire de test dynamique des classes avec JUnit4

Ecrivez une classe qui effectue le travail suivant :

  • Utilisation d'une convention de nommage pour retrouver des tests JUnit à partir de la classe: pour une classe, les classes de test correspondantes sont dans le même package et leur nom est celui de la classe suivi de Test (on considère qu'il y a au maximum une classe de test par classe normale).
  • La classe utilitaire fournit une méthode pour passer tous les tests de la classe et rendre un booléen qui indique si tous les tests sont passés (pour réutiliser du code du framework JUnit4, allez voir du coté des classes JUnitCore et Result dans http://kentbeck.github.com/junit/javadoc/latest/).

Le fonctionnement de cette classe utilitaire doit être aussi testée, avec des mocks, et les tests fournis dans le projet !

Nouveaux comportements des bébêtes

En plus des comportements Hasard et Emergente qui sont déjà fournis dans les TD, vous devez incorporer des nouveaux comportements variables :

  • Chaque bebete a un niveau de d'énergie :
    • les bebetes emergentes qui voient beaucoup d'autres bebetes ne perdent pas d'énergie, sinon elles s'épuisent doucement.
    • les bebetes hasard perdent ou gagnent un tout petit peu d'énergie de temps en temps, aléatoirement aussi
    • certaines bebetes deviennent prédatrices lorsqu'elles ont un niveau d'énergie trop faible (à vous de fournir de quoi paramétrer le nombre de bébêtes qui peuvent devenir prédatrices)
  • Le comportement prédateur consiste à essayer de suivre et de rattraper une autre bête dans le champ de vision (possiblement en déterminant la moins rapide ou la plus chargée en énergie et en se rappelant qui on suit). Une fois rattrapée, le prédateur engrange toute l'énergie de l'autre bête et cette dernière meurt.
  • chaque bebete pourra changer dynamiquement de comportement (emergente -> predatrice -> emergente par exemple)

Cette nouvelle fonctionnalité entraîne l'application d'un ou plusieurs nouveaux patrons de conception qu'il vous faut déterminer et expliquer dans votre documentation.

Il vous revient aussi de :

  • tester le comportement prédateur unitairement, ainsi que le changement de comportement lui-même. Ces tests font partie de ceux qui seront exécutés automatiquement lors du chargement dynamique (cf. fonctionnalité suivante). Au moins une partie de ces tests doivent utiliser des objets mock en utilisant Mockito.
  • notifier dans un panneau de controle des bebetes mortes, des déviations, des scores de chaque prédateur
  • fournir de quoi configurer des simulations (nb de bebetes, presence ou pas de comportement en fonction de ce qui est chargé dynamiquement)

Utilisation dans le simulateur de bébêtes

Partant de la dernière version du simulateur, réalisée lors du dernier TD, il faut utiliser la classe utilitaire de test pour :

  • charger les classes de bébêtes en recherchant dans un répertoire spécifique les classes de bébêtes ou de comportements (un seul répertoire à analyser, filtrer les .class et en déduire le nom des classes à charger)
  • les tester de manière autonome à l'aide de la classe utilitaire
  • fournir la liste des classes qui passent 100% de leurs tests
  • démarrer une simulation en fabriquant un nombre aléatoire de bébêtes pour chaque classe de bébêtes de la liste, et ce grâce à la fonctionnalité de configuration évoquée dans la question précédente.

Il faudra aussi légèrement améliorer les fonctionnalités du simulateur pour :

  • fournir un moyen pour redémarrer une simulation aléatoire
  • ajouter un panneau de texte pour afficher les résultats des tests effectués (une sorte de console)

Distribution attendue

Archive de l'application

Elle se composera au minimum de :

  1. Un répertoire src avec les sources
  2. Un fichier jar pour le jeu
  3. Un fichier build xml avec les entrées suivantes : doc, compile, run, installnewplugins + d'autres cibles si vous en avez besoin
  4. Un répertoire plugins avec à l'intérieur les plugins (classes ou jar suivant ce que vous arrivez à faire)
  5. Un répertoire pluginsDeTest avec à l'intérieur les plugins non installés par défaut. En exécutant "ant installnewplugins" ça les recopie dans le répertoire "plugins" et en faisant "ant run" ça permet de relancer le jeu avec les nouveaux plugins, ça permettra de bien vérifier l'aspect dynamique de votre jeu.
  6. fichier README pour expliquer vos choix de conception et vos résultats.

Barème

  • Complétude et fonctionnalité du fichier ant : 2 points
  • Exécution portable depuis le fichier ant (différentes cibles pour faciliter la démonstration des autres fonctionnalités, différentes cibles, etc.) : 2 points
  • Classe de test dynamique (chargement, exécution) : 2 points
  • Tests de cette classe : 2 points
  • Comportement prédateur et gestion d'énergie : 3 points
  • Test des comportements : 3 points
  • Utilisation d'objets mock dans une partie des tests : 1 point
  • Application des patrons de conception sur les comportements : 2 points
  • Assemblage des tests dans le simulateur (avec tests de cet assemblage), filtrage et exécution des bons tests, console : 3 points

Liste des équipes

  1. Robin Druel, Clément Arnaud, Pierrick Morizot, Guillaume Larroque
  2. PARROCCHIALE Alexandre, TEFFAHA Mortadha, CHAABANE Mohamed, LE HALPER Nicolas
  3. El allaoui Kacem, Conte Gaetan, Binta Bah Abdoulaye, Gral Maxime
  4. Engilberge swan, Hedda Hedi, Ouleha Nadir, Prohouly Florent
  5. Demeure Guillaume, Duminy Cédric, Dupuy-Seghiri Lucas, Fenoll Loïse
  6. Francis Dolière Somé, Michel Souza, Jean Max Pierrette, Béatrice Noel
  7. Selim HAMADOUCHE, Julien DOTT, Nicolas ERISEY, Nicolas NOUIRA
  8. LAZREG Sami, FERKOUCH Yassine, AHIZOUNE Mehdi, KOTTO KOMBI Roland
  9. Dias Vaz Jean-michel, Huin Nicolas, Perez Guillaume, Zitoun Heytem
  10. Charlotte Sy, Galin Lipchevb, Hîncu Andrei Vicentiu, Phuong Tran Huu

-- PhilippeCollet - 07 Jan 2013

Revision: r1.10 - 07 Jan 2013 - 10:16 - PhilippeCollet
Minfo > GlMiniProjet1213
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