PROFDINFO.COM

Votre enseignant d'informatique en ligne

Pokémon - attrapez-les tous!

 

PikachuLes Pokémon

Les Pokémon sont des monstres de poche (d'ailleurs leur nom est l'abréviation de Pocket Monsters). Il en existe des centaines et on peut les attraper dans une Pokéball, une genre de petite balle contenant de toute évidence une porte dimensionnelle, un peu comme un "bag of holding". Cela permet de loger un gros et lourd Pokémon dans une toute petite balle sans augmenter son poids. Un entraîneur de Pokémons tente d'en attraper le plus possible et de les entraîner afin de les faire évoluer. En effet, un Pokémon peut évoluer, parfois plusieurs fois, pour devenir une version améliorée de lui-même, assez différente pour être considéré comme un Pokémon en soi. Pour attraper un Pokémon, ça aide d'en avoir déjà quelques-uns qui feront le combat pour nous, affaiblissant ainsi le Pokémon sauvage que l'on pourra attraper ensuite dans une Pokéball. Il existe également des compétitions d'entraîneurs qui font combattre leurs Pokémons les uns contre les autres pour le prestige.

Les types de Pokémon

Les Pokémon viennent en plusieurs "saveurs". Chaque catégorie correspond en fait à une famille de Pokémons qui partagent certaines attaques, certaines vulnérabilités et certaines résistances. Mentionnons, entre autres:

Tout l'art du combat de Pokémon consiste simplement à envoyer le bon Pokémon se battre contre chaque adversaire - idéalement il faut choisir un Pokémon qui est non seulement fort et endurant, mais qui est également résistant aux attaques possibles de l'adversaire et, encore mieux, qui a des attaques auxquelles l'adversaire est vulnérable. C'est au fond une gigantesque partie de roche-papier-ciseaux, en plus compliqué.

Les attaques physiques - tout le monde peut le faire!

Tous les Pokémon peuvent effectuer des attaques physiques de base, comme frapper bêtement l'adversaire. Tous les Pokémon ont un score d'attaque et un score de défense et les attaques physiques se basent uniquement sur ces scores.

Les attaques spéciales - une affaire de famille!

Il existe des tonnes d'attaques spéciales accessibles aux membres de chaque famille. Par exemple, les Électriques peuvent lancer des éclairs, les Feux peuvent cracher du feu et les Gazons ont des techniques de drainage de points de vie et de guérison (n'importe quoi!).

L'évolution

Tous les Pokémon peuvent éventuellement évoluer. Lorsqu'un Pokémon évolue, il se transforme en fait en un nouveau Pokémon, ayant normalement une ressemblance avec l'orginal, mais bien entendu plus gros et/ou plus puissant. Par exemple, le bien connu Pikachu est en fait l'évolution de Pichu et peut éventuellement évoluer encore pour devenir Raïchu

.PichuflèchePikachuflècheRaichu

 

Votre travail

Ce travail en est un de modélisation. Le but ici n'est pas d'obtenir un programme mais une analyse et un diagramme de classes UML (Unified Modeling Language) le plus complet possible. Vous devrez pour cela définir des classes (abstraites et concrètes), contenant des attributs et méthodes, ainsi que définir les liens d'héritage entre les classes. Vous devrez également donner les signatures de chacune de vos méthodes et justifier votre design.

On voudra pouvoir instancier des Pokémons de différents type. Chaque Pokémon aura:

 

Type du défenseur
Type de l'attaquant
Types Feu Eau Gazon Électrique
Feu
-
-
*
Eau
*
-
-
Gazon
-
*
-
Électrique
*
X
-

Légende

Dommages normaux Double dommages Demi-dommages Sans effet
*
-
X

Il faut également penser à modéliser les Pokéballs - on veut pouvoir instancier une Pokéball et pouvoir y loger un Pokémon de n'importe quel type.

Ce qu'il faut faire, concrètement

Conseils

Prenez le temps de réfléchir un peu à tout ça. Il y a des tas de designs possibles mais parmi ce tas il en existe plusieurs mauvais et quelques bons. La plus mauvaise idée serait de tenter de faire une seule classe Pokémon qui implémente toutes ces variations de façon interne. Prenez avantage de l'héritage et réfléchissez à l'utilité de classes abstraites... Votre modélisation doit être intuitive! Il est fort possible que plusieurs élèves aient des solutions différentes mais toutes aussi valables les unes que les autres.

Dans votre diagramme, n'oubliez pas d'indiquer ce qui est public (représenté par un symbole +), privé (un -) et protégé (un #). Faites bien la différence entre une classe qui hérite d'une autre et une classe qui contient comme attribut une instance d'une autre classe - les lignes entre les classes sur le diagramme ne sont pas les mêmes dans ces deux cas! Et rappelez-vous que ce qui est abstrait (classe ou méthode) est écrit en italique.Torterra

Piste de réflexion - pour aller un peu plus loin

Certains Pokémon (plusieurs en fait) appartiennent à deux types à la fois. Par exemple, Torterra est de type Gazon et Terre. Y aurait-il une façonde modéliser cela avec les connaissances qu'on a en ce moment? De quoi aurait-on besoin?

Remise

Le travail est à remettre pour le début du prochain laboratoire, soit vendredi le 14 septembre 2007 à 13h30. Remettez votre rapport sur papier à votre professeur au début du laboratoire, ou avant (il est même permis de le glisser sous la porte de son bureau). N'oubliez pas que tout laboratoire peut être corrigé et qu'un travail remis en retard obtiendra une note plafonée à 60%.

Et maintenant: entraîneurs Pokémon, à vos claviers!