User Tools

Site Tools


2019_2020:s3:concprogobjet:td:tddp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2019_2020:s3:concprogobjet:td:tddp [2019/11/19 08:09]
blay [Partie 4 : Compositions de combattants]
2019_2020:s3:concprogobjet:td:tddp [2019/12/10 16:08] (current)
blay [Partie 4 : Compositions de combattants (20 min)]
Line 8: Line 8:
 **Cette modélisation peut être réalisée sur papier**. L'​essentiel est d'​avoir toujours le modèle de votre application en tête. **Cette modélisation peut être réalisée sur papier**. L'​essentiel est d'​avoir toujours le modèle de votre application en tête.
 </​note>​ </​note>​
 +
 +<​note>​Les temps donnés sont là pour vous aider à vous évaluer. Cependant, si vous avez besoin d'un peu plus de temps pour bien faire les exercices, alors prenez-le parce que le véritable objectif est bien que vous sachiez faire seul ! </​note>​
 ===== Partie 1 : Les briques de base (20 min) ===== ===== Partie 1 : Les briques de base (20 min) =====
  
Line 15: Line 17:
 <note tip>Vous avez ici un modèle de classes... Vous pourrez n'​implémenter que deux types de personnages. C'est suffisant pour tester la suite.</​note>​ <note tip>Vous avez ici un modèle de classes... Vous pourrez n'​implémenter que deux types de personnages. C'est suffisant pour tester la suite.</​note>​
  
-Au début de sa vie un personnage a un coefficient de vitalité de 100. +Au début de sa vie un personnage a une vitalité de 100. 
-Il est affaibli au cours de sa vie, ce qui réduit ​son coefficient de vitalité.+Il est affaibli au cours de sa vie, ce qui réduit ​sa vitalité.
  
 Les personnages savent se battre en utilisant des armes qui peuvent être des dagues, des épées et des boucliers. Les personnages savent se battre en utilisant des armes qui peuvent être des dagues, des épées et des boucliers.
  
-A un moment donné du jeu, un personnage ne manipule qu’une seule arme, au moins dans un premier temps. Cependant, il peut changer d’arme plusieurs fois au cours du déroulement du jeu.+Un personnage ne manipule qu’une seule arme à la fois, au moins dans un premier temps. Cependant, il peut changer d’arme plusieurs fois au cours du déroulement du jeu.
  
 Une arme a une force d'​attaque et une force protectrice ((Elle a d'​autres propriétés que nous ne discutons pas ici, mais une épée n'est pas manipuler de la même manière qu'un bouclier, etc. Donc en fonction du fait qu'il s'agit d'une épée ou d'un bouclier, on aura des comportements différents,​ mais c'est une autre "​histoire"​.)) Une arme a une force d'​attaque et une force protectrice ((Elle a d'​autres propriétés que nous ne discutons pas ici, mais une épée n'est pas manipuler de la même manière qu'un bouclier, etc. Donc en fonction du fait qu'il s'agit d'une épée ou d'un bouclier, on aura des comportements différents,​ mais c'est une autre "​histoire"​.))
Line 28: Line 30:
   * bouclier : force : 5, protection : 20   * bouclier : force : 5, protection : 20
  
-<note tip>Vous avez ici un modèle de classes ​plus complet ... Vous pourrez n'​implémenter que deux types d'​armes. C'est suffisant pour tester la suite.</​note>​ +<note tip>Vous avez ici un modèle de classes complet ... Vous pourrez n'​implémenter que deux classes ​d'​armes. C'est suffisant pour tester la suite.</​note>​
- +
-L’utilisateur du jeu doit avoir la possibilité d’ordonner à un personnage (A) de se battre contre un autre (B). Celui qui est attaqué (B) voit sa vitalité décroitre d'un coefficient qui correspond à la //force de l'​attaquant (force de son arme) - sa propre force protectrice (force protectrice de son arme)//. +
  
 +L’utilisateur du jeu doit avoir la possibilité d’ordonner à un personnage (A) de se battre contre un autre (B). Celui qui est attaqué (B) voit sa vitalité décroitre d'un coefficient qui correspond à la //force de l'​attaquant (force de son arme A) - sa propre force protectrice B (force protectrice de son arme B)//.
  
 A chaque personnage est associé à une arme par défaut (Orcs : épée ; Troll : dague ; Tauren : bouclier, Humain : épée). A chaque personnage est associé à une arme par défaut (Orcs : épée ; Troll : dague ; Tauren : bouclier, Humain : épée).
Line 49: Line 49:
 <note tip>Vous avez votre modèle et vos codes, y compris quelques tests.</​note>​ <note tip>Vous avez votre modèle et vos codes, y compris quelques tests.</​note>​
  
 +<note warning>​Pour l'an prochain, ils transportent un sac d'​armes?</​note>​
 ===== Partie 2  : Fabriques (1 heure) ===== ===== Partie 2  : Fabriques (1 heure) =====
 /* Fabrique /* Fabrique
Line 58: Line 58:
 Au fur et à mesure que le jeu est mis sur le marché, pour "​créer du hype", on veut pouvoir ajouter de nouvelles armes, sans modifier l'​ensemble du jeu. Au fur et à mesure que le jeu est mis sur le marché, pour "​créer du hype", on veut pouvoir ajouter de nouvelles armes, sans modifier l'​ensemble du jeu.
 L'​idée est de : L'​idée est de :
-  - ne pas modifier les classes d'​armes définies précédemment;​+  - **ne pas modifier les classes d'​armes définies précédemment;​**
   - pouvoir créer des armes à partir de leur type et avec un nom donné (ex: créer une épée de nom //​excalibur//​);​   - pouvoir créer des armes à partir de leur type et avec un nom donné (ex: créer une épée de nom //​excalibur//​);​
   - retrouver une arme à partir de son nom;   - retrouver une arme à partir de son nom;
 +  - ne pas dépendre des classes concrètes d'​armes lors de la création d'un personnage.
  
-exemple de scenario de test : +exemple de scenario de test dont vous pouvez vous inspirer
 <code java> <code java>
         WeaponFactory wf = new WeaponFactory();​         WeaponFactory wf = new WeaponFactory();​
         Weapon w = wf.createWeapon("​SWORD","​excalibur"​);​         Weapon w = wf.createWeapon("​SWORD","​excalibur"​);​
         Weapon w = wf.getWeapon("​excalibur"​);​         Weapon w = wf.getWeapon("​excalibur"​);​
 +        ​
 +        Personnage azag = new Orc("​Azag",​5);​
 + assertEquals(Class.forName("​coo.armes.Epee"​),​ azag.getArme().getClass());​
 </​code>​ </​code>​
   ​   ​
-8-o Les Personnages au début sont créés en fonction des classes d'​armes prévues. Modifiez votre code pour ne plus dépendre de ces classes d'​implémentation,​ en faisant appel à une fabrique d'​armes.+
 <note tip>(1) Modélisez par un diagramme de séquence les interactions que vous envisagez à la création d'un personnage; complétez le diagramme suivant.{{:​2019_2020:​s3:​concprogobjet:​td:​capture_d_e_cran_2019-11-19_a_00.14.50.png?​200|}} ​ <note tip>(1) Modélisez par un diagramme de séquence les interactions que vous envisagez à la création d'un personnage; complétez le diagramme suivant.{{:​2019_2020:​s3:​concprogobjet:​td:​capture_d_e_cran_2019-11-19_a_00.14.50.png?​200|}} ​
  
Line 154: Line 158:
 <note tip> <note tip>
  
-(1) Modéliser par un diagramme de séquence, une attaque, pour cela complétez le diagramme suivant.+(1) Modéliser ​une attaque ​par un diagramme de séquence, pour cela complétez le diagramme suivant.
 {{:​2019_2020:​s3:​concprogobjet:​td:​capture_d_e_cran_2019-11-19_a_07.53.38.png?​200|}} {{:​2019_2020:​s3:​concprogobjet:​td:​capture_d_e_cran_2019-11-19_a_07.53.38.png?​200|}}
  
 (2) Complétez sur papier votre diagramme de classe. (2) Complétez sur papier votre diagramme de classe.
 </​note>​ </​note>​
- +<note warning>​Pour l'an prochain, Reformuler en parlant de recevoir des coups</​note>​ 
-===== Partie 4 : Compositions de combattants =====+===== Partie 4 : Compositions de combattants ​(20 min) =====
  
 On désire pouvoir envoyer au combat des personnages individuels et également des groupes tels que des armées, des bataillons ou des hordes. ​ On désire pouvoir envoyer au combat des personnages individuels et également des groupes tels que des armées, des bataillons ou des hordes. ​
Line 190: Line 194:
 </​note>​ </​note>​
  
-===== Partie 5 : Une peu de magie dans un monde de brutes =====+<note warning>​Pour l'an prochain, explicitez le fait que la force de l'​attaque et de la protection sont propagées sur chacun des acteurs..... Pas facile du tout.... probablement un pourcentage </​note>​ 
 + 
 +===== Partie 5 : Forces Occultes (30 min) ===== 
 +Les "​divinités"​ veulent être informées de toute attaque des personnages,​ des constructions d'​armes. 
 +Elles sont mal connues; certaines divinité peuvent apparaitre ou disparaitre au fil du temps, elles peuvent surveiller certains personnages et pas d'​autres,​ etc. 
 + 
 +Voici des exemples de scénario à réaliser. 
 + 
 +    - Les "Dieux Espions"​ surveillent des personnages individuellement en affichant à chaque notification d'une attaque par ces derniers : "​NomPersonnage nouvelle attaque contre NomPersonnage"​.  
 +    - Les "Dieu des calculs"​ surveillent des personnages et comptabilisent le nombre d'​attaques déclenchées par chacun d'eux. En particulier,​ le dieu "​Calculus"​ surveillent TOUS les personnages dès leur création. 
 +    - En cours de jeux, on peut ajouter de nouveaux Dieux. Ainsi  les dieux issus de la "​National Rifle Association"​ ont pour objectifs de signaler (juste un affichage dans le cadre du TD) chaque fois qu'une nouvelle arme est construite. 
 + 
 +===== Partie 6 : Une peu de magie dans un monde de brutes =====
  
 Quel est le "​pattern"​ que vous pourriez utiliser dans cet exercice ?? :-/ Quel est le "​pattern"​ que vous pourriez utiliser dans cet exercice ?? :-/
Line 214: Line 230:
    * quelles sont les conséquences d'un ordre différent d'​applications des "​décoration"​ ?    * quelles sont les conséquences d'un ordre différent d'​applications des "​décoration"​ ?
  
-===== Partie 6  ===== + 
-VISITEUR? +===== Partie facultative =====
-===== Partie ​facultative =====+
 On veut pouvoir créer des personnages et des groupes automatiquement,​ sans modifier les personnages définis précédemment. On veut pouvoir créer des personnages et des groupes automatiquement,​ sans modifier les personnages définis précédemment.
 Un joueur a en début de partie 50 points, qu'il dépense en créant des personnages et/ou des groupes. Un joueur a en début de partie 50 points, qu'il dépense en créant des personnages et/ou des groupes.
2019_2020/s3/concprogobjet/td/tddp.1574147374.txt.gz · Last modified: 2019/11/19 08:09 by blay