CC3

Texte de la première page
Mardi 23 novembre 2010
PHY2002L
PROGRAMMATION C++
CONTROLE ECRIT
Durée : 1h – Nombre de pages : 2 – documents autorisés : supports de cours, TD et TP
But : Ecrire un jeu faisant un combat entre une liste d’adversaires.
Le programme comportera 3 fichiers : main.cpp, perso.cpp et perso.h. Vous devrez écrire
le contenu de ces trois fichiers.
Le fichier perso.h contiendra :
‐ [facile] une structure nommée perso décrivant les caractéristiques des
combattants du tournoi, à savoir une chaine de caractères pour le nom, suivie de
trois réels respectivement pour les points de vie, de force et de défense.
‐ [facile] Les déclarations des fonctions combat, tirage et affiche qui seront écrites
dans le fichier perso.cpp
Le fichier perso.cpp contiendra les fonctions suivantes :
‐ [facile] Une fonction affiche qui affichera à l’écran toute les caractéristiques d’un
personnage
‐ [moyen] Une fonction tirage qui retourna un nombre aléatoire entre 0 et une
valeur réelle max passée en argument de la fonction.
‐ [difficile] Une fonction combat qui effectuera le combat entre deux personnages
de type perso. Les modifications des personnages devront être conservées pour
les combats suivants. Si un des personnages est déjà éliminé, le combat n’a pas
lieu. Il se déroule de la façon suivante :
o Tant qu’aucun des deux personnages n’est éliminé (un personnage est
éliminé quand ses points de vie sont négatifs)
Le premier personnage porte un coup au second : Le coup est
calculé de la façon suivante : un tirage aléatoire entre 0 et la force
de l’attaquant moins un tirage aléatoire entre 0 et la défense de
l’attaqué. Si le coup est négatif, il est paré et rien ne se passe. Si il
est positif, on retranche à la vie de l’attaqué la valeur du coup.
Si le second personnage n’est pas éliminé, il porte à son tour un
coup au premier, de la même façon que précédemment.
Dans le fichier main.cpp, la fonction main() contiendra les actions suivantes :
‐ [facile] initialisation du générateur de nombres aléatoires
‐ [moyen] lecture du fichier personnages.txt qui a le format suivant :
o Première ligne : un entier donnant le nombre de personnages dans le
fichier
Page 1/2
o Puis, une ligne par personnage composée d’une chaine de caractères (sans
espaces) et de 3 réels pour son nom, ses points de vie, de force et de
défense. Par exemple :
‐
‐
‐
3
Isidor 10.6 4.2 6.7
TropFort 15.2 8.5 6.8
Looser 4.2 5.3 4.2
On crée un tableau dynamique de type perso ayant pour taille le nombre de
personnages lus en première ligne. Et on remplit chaque case de ce tableau par
les personnages lus dans le fichier.
[facile] On affiche l’ensemble des personnages.
[difficile] Viens ensuite le tournoi qui se fait sous la façon suivante : Chaque
personnage doit rencontrer l’ensemble des autres personnages. On prendra soin
qu’un personnage ne se combatte pas lui même ! Par contre, un personnage peut
combattre un personnage déjà éliminé (le cas est traité à l’intérieur de la fonction
combat).
[moyen] A l’aide d’une boucle, on affiche le vainqueur du tournoi, à savoir le
dernier personnage non éliminé.
Page 2/2
PHY2002L
PROGRAMMATION C++
CONTROLE ECRIT
Durée : 1h – Nombre de pages : 2 – documents autorisés : supports de cours, TD et TP
But : Ecrire un jeu faisant un combat entre une liste d’adversaires.
Le programme comportera 3 fichiers : main.cpp, perso.cpp et perso.h. Vous devrez écrire
le contenu de ces trois fichiers.
Le fichier perso.h contiendra :
‐ [facile] une structure nommée perso décrivant les caractéristiques des
combattants du tournoi, à savoir une chaine de caractères pour le nom, suivie de
trois réels respectivement pour les points de vie, de force et de défense.
‐ [facile] Les déclarations des fonctions combat, tirage et affiche qui seront écrites
dans le fichier perso.cpp
Le fichier perso.cpp contiendra les fonctions suivantes :
‐ [facile] Une fonction affiche qui affichera à l’écran toute les caractéristiques d’un
personnage
‐ [moyen] Une fonction tirage qui retourna un nombre aléatoire entre 0 et une
valeur réelle max passée en argument de la fonction.
‐ [difficile] Une fonction combat qui effectuera le combat entre deux personnages
de type perso. Les modifications des personnages devront être conservées pour
les combats suivants. Si un des personnages est déjà éliminé, le combat n’a pas
lieu. Il se déroule de la façon suivante :
o Tant qu’aucun des deux personnages n’est éliminé (un personnage est
éliminé quand ses points de vie sont négatifs)
Le premier personnage porte un coup au second : Le coup est
calculé de la façon suivante : un tirage aléatoire entre 0 et la force
de l’attaquant moins un tirage aléatoire entre 0 et la défense de
l’attaqué. Si le coup est négatif, il est paré et rien ne se passe. Si il
est positif, on retranche à la vie de l’attaqué la valeur du coup.
Si le second personnage n’est pas éliminé, il porte à son tour un
coup au premier, de la même façon que précédemment.
Dans le fichier main.cpp, la fonction main() contiendra les actions suivantes :
‐ [facile] initialisation du générateur de nombres aléatoires
‐ [moyen] lecture du fichier personnages.txt qui a le format suivant :
o Première ligne : un entier donnant le nombre de personnages dans le
fichier
Page 1/2
o Puis, une ligne par personnage composée d’une chaine de caractères (sans
espaces) et de 3 réels pour son nom, ses points de vie, de force et de
défense. Par exemple :
‐
‐
‐
3
Isidor 10.6 4.2 6.7
TropFort 15.2 8.5 6.8
Looser 4.2 5.3 4.2
On crée un tableau dynamique de type perso ayant pour taille le nombre de
personnages lus en première ligne. Et on remplit chaque case de ce tableau par
les personnages lus dans le fichier.
[facile] On affiche l’ensemble des personnages.
[difficile] Viens ensuite le tournoi qui se fait sous la façon suivante : Chaque
personnage doit rencontrer l’ensemble des autres personnages. On prendra soin
qu’un personnage ne se combatte pas lui même ! Par contre, un personnage peut
combattre un personnage déjà éliminé (le cas est traité à l’intérieur de la fonction
combat).
[moyen] A l’aide d’une boucle, on affiche le vainqueur du tournoi, à savoir le
dernier personnage non éliminé.
Page 2/2
Partager ce document
Télécharger le fichier
Faire un lien vers ce document
Lien permanentpour un message, un forum, un réseau social
Lien courtpour un SMS ou un profil
Code HTMLpour un site ou un blog
Sur le même sujet
Les mots qui reviennent le plus dans ce document. Chacun lance une recherche dans les fichiers publics.


