La guerre des bugs

Introduction

Pendant la session vous avez construit une version du logiciel BugBattle. Dans ce laboratoire votre tâche est simple, mais potentiellement sans limites: créer une créature qui est meilleure que toutes les autres pour conquérir le monde!

Remises et dates d’échéance

Le laboratoire sera remis en deux phases: un produit préliminaire après une semaine, et un produit final après deux semaines.

La compétition finale de la Guerre des bugs aura lieu lors de la dernière période de laboratoire du cours, soit le mercredi 12 avril à 14h40 dans la salle de laboratoire habituelle.

Mercredi 5 avril 2017

Vous devez apporter au laboratoire au moins une implémentation initiale d’une créature honnête pendant la période du 5 avril 2017. (Voir ci-dessous pour les définitions de « créatures honnêtes » et « créatures tricheuses »). L'instructeur fera une compétitions entre les créatures des groupes différents afin de vous donner un point de référence pour la performance de votre créature sans peur que vos collègues ne vous volent vos idées. Vous pouvez aussi apporter des créatures tricheuses si vous voulez. Elles auront l’opportunité de lutter contre les autres créatures tricheuses.

Lundi 10 avril 2017

Vous devez remettre votre rapport de laboratoire et le code source avant 23h59 le 10 avril 2017 par courriel. Veuillez remettre:

  1. Dans un fichier .zip:
    • une créature honnête prête pour la compétition; et
    • si vous voulez, une créature tricheuse.
  2. votre rapport de laboratoire, en format PDF. Voir les exigences du rapport de laboratoire ci-dessous; et
  3. votre modèle de conception (en format .vpp de VP-UML).

Installation

Votre créature combattra dans une version améliorée du BugBattle. Celle-ci est quelque peu différente de la version que vous avez vu dans le dernier laboratoire. Vous devez donc l'explorer afin de bien la connaître et la comprendre.

Téléchargez le code source et la documentation VP-UML. Importez le code source dans un projet Eclipse et générer la documentation javadoc avec un niveau de visibilité privé. Ouvrez le fichier modèle dans Visual Paradigm et étudiez le modèle, le javadoc et le code source. Les classes Hunter et SuperPlant sont des exemples de créatures créées dans le cadre d'application.

Définitions

Créature honnête. Une créature honnête fonctionne dans l’esprit du monde simulé, tel que documenté. Elle utilise les organes documentés de la façon documentée et n’essaie pas d’exploiter des faiblesses ou comportements étranges du système.

Créature tricheuse. Une créature tricheuse utilise des défauts dans le système pour avoir un avantage « injuste » en dehors de l’esprit du monde simulé. Si vous n’êtes pas certain si une approche est honnête ou non, elle ne l'est probablement pas.

Tâches

Implémentation

Votre tâche principale est la conception, implémentation et documentation d’au moins une créature honnête. Une créature qui est capable de gagner contre toutes les autres créatures et de dominer le monde! Une incroyable créature !

Vous pouvez aussi créer une autre créature qui, elle, est tricheuse. Une créature sournoise. Une créature qui gagne en transgressant les règles!

Contraintes d'implémentation

Votre créature doit être implémentée comme une sous-classe de Creature et doit suivre les exigences documentées dans les commentaires de la classe Creature. Vous devez aussi respecter les autres contraintes et exigences documentées dans les autres commentaires des classes.

Donner à votre créature un nom de classe unique. L’implémentation de votre créature doit se trouver dans un seul fichier .java. Les sous-classes de Budder, autres classes d’aide, et les définitions d’autres types de créature coopérantes doivent être définies comme classes internes de votre classe principale.

Dans les commentaires de classe pour votre créature, indiquer si votre créature est du type « honnête » ou « tricheuse ».

Vous ne devez pas modifier le code qui se trouve dans le paquet bugbattle.core. Ce qui serait inutile de toute façon puisque pendant la compétition, votre créature sera mise dans une version « propre » du système fourni par les instructeurs.

Documentation de conception

Vous devez complètement documenter vos créatures avec du javadoc, y compris une description claire des stratégies suivies par votre créature. La description devrait être suffisamment claire pour que le lecteur sache exactement comment votre créature fonctionne et pourquoi elle fonctionne ainsi sans devoir lire le code.

Utiliser VP-UML pour documenter votre design. Vous devez avoir au moins un diagramme qui montre la structure complète de chacune de vos créatures, y compris les classes d’aide, etc. Vous devez aussi créer au moins un diagramme de séquence qui illustre l’opération de la méthode doTurn() pour chaque créature. S’il y a plusieurs exécutions alternatives de doTurn() vous devriez avoir un diagramme pour chacune des alternatives plutôt que d’essayer de tout représenter sur le même diagramme. Souvenez-vous que les diagrammes aident à la compréhension. S'ils deviennent trop complexes et difficiles à lire, il y a un problème.

Chaque diagramme doit avoir des notes qui indiquent sa signification.

Exigences du rapport du laboratoire

Votre rapport du laboratoire doit être facile à lire et descriptif, avec les sections suivantes:

  1. une introduction et description de vos créatures et du reste du code afin de guider le lecteur dans votre travail;
  2. une section sur la stratégie qui indique le fonctionnement de chacune de vos créatures dans son environnement, c.-à-d. sa stratégie de survie;
  3. une description de l’implémentation de chaque créature, y compris tout usage des patterns de design;
  4. si vous remettez une créature tricheuse, une explication des défauts ou faiblesses du système que vous avez utilisés;
  5. une description de votre stratégie de test: comment avez-vous déterminé si votre créature fonctionnait bien?
  6. une discussion sur l’usage des patterns de design dans la simulation: quels patterns sont utilisés, où le sont-ils, sont-ils utilisés de la bonne façon et y-a-t-il d’autres endroits dans le système où l’on pourrait utiliser les patterns de design?
  7. une explication détaillée d’un nouvel organe qui rendrait la compétition plus intéressante; et
  8. une conclusion.

Distributions des notes

Sur un total de 125, plus les bonus:

  • une tentative sérieuse d'implémenter une créature honnête: 50
  • rapport: 26
  • javadoc: 12
  • documentation VP-UML: 20
  • qualité générale du code: 17
  • bonus de fin: 5 pour finir dans la meilleure moitié; 10 pour le top 4, 25 pour le gagnant
  • bonus pour une bonne créature tricheuse: jusqu'à 10