This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
2016_2017:s3:concprogobjet:td:td7 [2016/11/06 09:00] blay [Jeu] |
2016_2017:s3:concprogobjet:td:td7 [2016/11/06 15:14] blay [Partie 1] |
||
---|---|---|---|
Line 2: | Line 2: | ||
- | voici quelques exercices simples mettant en jeu des DP | + | voici quelques exercices simples mettant en jeu deux DPs. |
- | ===== Jeu ===== | + | ===== Partie 1 ===== |
/* decorateur | /* decorateur | ||
*/ | */ | ||
Line 32: | Line 32: | ||
* Définir un diagramme de classe permettant de représenter cette situation | * Définir un diagramme de classe permettant de représenter cette situation | ||
* Tester vos classes avec le scénario suivant : | * Tester vos classes avec le scénario suivant : | ||
- | L’utilisateur crée un personnage nommé « Diablon » de type « Tauren » avec une corne de 15 cm. | + | - Créer un personnage nommé « Diablon » de type « Tauren » avec une corne de 15 cm; |
- | L’utilisateur demande au personnage de se battre. | + | - Créer un personnage nommé « Azag» de type « Orc » avec des oreilles de 5 cm; |
- | L’utilisateur crée un personnage nommé « Azag» de type « Orc » avec des oreilles de 5 cm | + | - L’utilisateur demande à Diablon d'attaquer Azag, cela n'a aucun effet; |
- | L’utilisateur demande au personnage de se battre. | + | - L’utilisateur demande à Azag d'attaquer Diablon, qui perd 5 points de vitalité; |
- | L’utilisateur crée un personnage nommé « ArKor» de type « Troll », bière préférée « Heineken ». | + | - On modifie l'arme associée à Diablon en la rendant magique avec un coefficient de 2; |
- | L’utilisateur demande au personnage de se battre. | + | - Diablon attaque Azag qui perd 5 points de vitalité; |
- | L’utilisateur crée un personnage nommé « Kir» de type « Humain» avec des yeux bleus. | + | - On modifie l'arme associée à Diablon en lui ajoutant un amplificateur de coefficient 3; |
- | L’utilisateur demande au personnage de se battre. | + | - Diablon attaque Azag qui perd 8 points de vitalité; |
- | L’utilisateur change l’arme de Diablon et lui confie une épée. | + | - .... |
- | L’utilisateur demande à Diablon de se battre. | + | - L’utilisateur crée un personnage nommé « ArKor» de type « Troll », bière préférée « Heineken ». |
+ | - etc. | ||
- | On aimerait à présent que la force d'une arme soit proportionnelle à la vitalité de l'attaquant et la force protectrice proportionnelle à la vitalité de celui qui reçoit le coup. | + | //Facultatif :// On aimerait à présent que la force d'une arme soit proportionnelle à la vitalité de l'attaquant et la force protectrice proportionnelle à la vitalité de celui qui reçoit le coup. |
+ | **Remarques :** | ||
+ | * que se passe-t-il si un personnage est attaqué avec une force inférieure à sa capacité à se protéger? | ||
+ | |||
+ | ===== Partie 2 ===== | ||
+ | /* Fabrique | ||
+ | */ | ||
+ | |||
+ | Au fur et à mesure que le jeu est mis sur le marché, pour "créer du hype", on veut pouvoir ajouter de nouvelles armes, y compris des extensions, sans modifier l'ensemble du jeu. | ||
+ | L'idée est de : | ||
+ | - 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//); | ||
+ | - retrouver une arme à partir de son nom; | ||
+ | - améliorer des armes (ex : amplifier excalibur d'un comportement magique de force 10). | ||
+ | |||
+ | |||
+ | exemple de scenario de test : | ||
+ | <code java> | ||
+ | WeaponFactory wf = new WeaponFactory(); | ||
+ | Weapon w = wf.createWeapon("SWORD","excalibur"); | ||
+ | w = wf.improve("AMPLIFIED","excalibur", 5); | ||
+ | assertEquals(30,w.strength()); | ||
+ | assertEquals(5,w.protection()); | ||
+ | w = wf.improve("Magic","excalibur", 10); | ||
+ | assertEquals(300,w.strength()); | ||
+ | assertEquals(50,w.protection()); | ||
+ | </code> | ||
+ | | ||
+ | | ||
+ | Les Personnages au début sont créés en fonction des classes d'armes prévues. Modifier votre code pour ne plus dépendre de ces classes d'implémentation. | ||
- | <! Fabrique | ||
- | !> | ||
- | La construction des personnages dépend des classes d'armes identifiées au début. | ||
- | Cependant, au fur et à mesure que le jeu est mis sur le marché, on aimerait pouvoir améliorer cette logique : à la création d'un personnage, l'arme qui lui est associé et déterminé en fonction du prix mis par le joueur (nombre de points). | ||
- | De plus, maintenant que les armes ont un coût on veut pouvoir associer une arme à un joueur... | ||