Projet : Pokemon
1
Projet : Pokemon
1 Énoncé général du besoin
Pokémon est une franchise créée par Satoshi Tajiri en 1996,
présente en particulier en jeu vidéo, dans des séries éditées par
Nintendo. Selon les statistiques de Nintendo en 2010, les jeux
Pokémon se sont vendus à environ 250 millions d’unités. Le jeu
vidéo Pokémon Rouge et Bleu s’est vendu à plus de 30 millions
d’exemplaires, ce qui en fait un record des ventes dans l’histoire
du jeu vidéo.
Les matchs Pokémon consistent en combats entre les Pokémons
de deux dresseurs, et se terminent quand tous les Pokémons de
l’un d’entre eux sont KO.
a
.
a. source Wikipedia
On se propose de créer un jeu permettant à deux dresseurs de s’affronter suivant la règle du combat simple.
2 Mode de fonctionnement
Pour pouvoir combattre, les Pokémon ont des valeurs séparées servant à engager le match. Ces cinq
statistiques sont :
C>
Les points de vie : la « vie » du Pomon. Si ce chiffre tombe à 0, le Pokémon est KO.
C>
Attaque : la puissance du Pokémon en matière d’attaques physiques.
C>
Défense ; la capaci du Pokémon à résister aux attaques physiques.
C>
Vitesse : permet de décider qui va attaquer en premier.
C>
Expérience : points d’expérience qui sont gagnés lorsque le Pokémon gagne un combat.
Lorsque deux Pokémons se rencontrent en combat simple, les gles sont les suivantes :
1.
Le Pokémon qui a la valeur
vitesse
la plus grande attaque l’autre. Si les deux Pokémon ont la même
valeur de vitesse, on effectue un tirage au sort pour connaître l’attaquant.
2. Le Pokémon qui attaque tire un nombre aléatoire entre 1 et 6. On définit une variable assaut de la
façon suivante :
si le nombre est pair,
assaut
= (
attaque
+
nombre
)
experience
100
si le nombre est impair,
assaut
= (
attaque
nombre)
experience
100
×
×
3.
Si la valeur
assaut
du Pokémon attaquant est supérieure au nombre de points de défense du Pokémon
défenseur, alors ce dernier perd un nombre de points de vie égal à
assaut - défense
, arrondi à l’entier
inférieur.
Dans le cas contraire, le Pokémon défenseur ne perd pas de points de vie.
4.
Si le Pokémon fenseur a encore des points de vie, il devient attaquant et on recommence au point
numéro 2.
5.
Le combat s’arrête lorsque l’un des Pokémon a perdu tous ses points de vie.
Règle importante : le nombre de points de vie ne peut être inférieur à 0 à l’issue du
dernier assaut
.
6. Si au bout de 5 tours aucun des Pokémon ne perd de point, on arrête le combat et on décrète un
match nul.
7.
Le Pokémon vainqueur gagne des points d’expérience égal à 1/10 de la différence des points d’ex-
périence, arrondi à l’entier supérieur. En cas de match nul, aucun Pokémon ne gagne de point
d’expérience.
Exemple
:
Premier tour : Pokémon 2 attaque car il a une vitesse plus grande.
Il tire le nombre 3. La valeur de la variable assaut est donc (11 3)
80
= 6, 72
100
6,72 est inférieur à 13 : le Pokémon 2 perd l’assaut et perd en valeur absolue 6,72 - 15 = 8,28 arrondi à 8
points de vie. Il lui en reste 40 - 8 = 32 points de vie.
Deuxme tour : Pokémon 1 attaque
Il tire le nombre 4. La valeur de la variable assaut est donc (22 + 4)
84
= 20, 8
100
20,8 est supérieur à 15 : le Pokémon 2 perd l’assaut et perd 20,8 - 13 = 7,38 arrondi à 7 points de vie. Il
lui en reste 45 - 7= 38.
On recommence jusqu’à ce que l’un des deux Pokémon atteigne 0 points de vie.
Le vainqueur gagne
|
84
80
|
= 0
,
4
arrondi à 1 point d’expérience.
10
Pokémon 2
points de vie : 40
attaque : 11
defense : 15
vitesse : 32
expérience : 80
Pokémon 1
points de vie : 45
attaque : 22
defense : 13
vitesse : 24
expérience : 84
×
×
3
Travail à réaliser
C>
Après avoir identifié les attributs nécessaires à la création d’un objet Pokémon, écrivez une classe
Pokemon
.
C>
Créez les mutateurs permettant de modifier les attributs devant être modifiés.
C>
Créez une méthode permettant d’afficher les informations sur un Pokémon sous la forme :
Nom : Pokémon 1
points de vie : 45
attaque : 22
défense : 13
vitesse : 24
expérience : 34
C>
Créez une méthode
attaquer
dans la classe
Pokemon
, permettant le combat avec une autre instance
de la classe Pokemon. Cette méthode modifie le points de vie du perdant et renvoie le vainqueur
(son instance de classe).
C>
Créez un programme principal permettant le combat entre deux Pokémon jusqu’au KO de l’un des
Pokémon ou bien jusqu’au match nul.
Pour chacune des classe, thode et fonction, vous indiquerez :
C>
la documentation complète comprenant :
ce que fait la classe ou la méthode,
la définition complète des entrées (nom, type, usage),
la finition complète des sorties (nom, type, usage),
un ou plusieurs exemples d’exécution (qui tiendront lieu de post-conditions), pour une utilisation
avec le module doctest.
On pourra réfléchir à la façon de tester une fonction (ou une méthode) utilisant la bibliothèque
random.
C>
les assertions sur les pré-conditions.
Vous créerez ensuite un programme principal permettant de faire s’affronter les deux Pokémons suivants :
Flamiaou
points de vie : 45
attaque : 65
defense : 40
vitesse : 70
expérience : 80
Dracaufeu
points de vie : 78
attaque : 84
defense : 78
vitesse : 100
expérience : 80
4 Déroulement du projet
La alisation du projet s’effectue en 6 étapes, dont les dues sont précisées, ainsi que leur mode de vali-
dation. Les durées sont indicatives. Elles tiennent compte d’un travail en classe
ET
d’un travail à la maison.
APP : appropriation du projet ; CONCEP : conception taillée ; COD : codage ; TEST : tests unitaires ;
INT : intégration ; RENDU : Rendre compte
Étape
Activités
APP
Découverte du projet, lecture du cahier des
charges, étude de l’exemple, recherche de
solutions.
CONCEP
Rédaction de la documentation (docstring)
COD
Écriture des pré-conditions et du code Python
TEST
Validation des postconditions .
INT
Écriture du corps du programme principal Utilisation des fonctions, initialisation des
variables, affichage du résultat
Validation de l’exemple
RENDU
Rendre sous la forme d’un seul fichier compressé
les éléments suivants :
C>
l’ensemble du programme Python commenté,
C>
un document rédigé
avec un outil numérique contenant :
la justification des choix du type de
chaque entrée ou sortie de chaque partie
que
vous avez codé,
le jeu de test utilisé pour valider les pré-
conditions avec leur justification,
le jeu de test utilisé pour valider les
post-conditions avec leur justification,
les difficultés rencontrées
les améliorations possible...
5
Critères d’évaluation
Critères d’évaluation
Note
Rédaction de la
documentation
Complète et explicite : 2
Incomplète ou peu explicite : 1
Non fournie : 0
Rédaction des
post-conditions
Complète : 3
Partielle mais en quantité/qualité suffisante : 2
Partielle et en quantité/qualité insuffisante : 1
Non fournie : 0
Rédaction des pré-conditions
Complète : 2
Partielle : 1
Non fournie : 0
Écriture du code
Valide totalement les post-conditions : 6
Valide majoritairement les post-conditions : 4
Valide minoritairement les post-conditions : 2
Valide aucune des post-conditions : 1
Non fournie : 0
Écriture du code
Le code est clair et commenté : 2
Le code est clair ou commenté : 1
Le code n’est ni clair ni commenté : 0
Écriture du code du
programme principal
Toutes les fonctions sont utilisées : 2
Quelques fonctions sont utilisées : 1
Aucune fonction n’est utilisée : 0
Rédaction du document
d’accompagnement
Le document respecte toutes les consignes et il est bien
rédigé : 3
Le document respecte la majorité des consignes et/ou
il est mal rédigé : 2
Le document respecte moins de la majorité des
consignes et il est mal rédigé : 1
Le document n’est pas fourni : 0