M1202 - TP Séance 4
Durée : 2h00
Objectifs
- Programmer une simulation de tournoi de sport.
- Manipuler les tableaux en Javascript.
Au menu
- Cours
- Consignes
- Création des équipes
- Déroulement d'un match
- Déroulement d'un tournoi
Aujourd'hui, nous allons utiliser des tableaux en Javascript.
Les tableaux permettent de stocker plusieurs valeurs dans une seule variable.
Par exemple, pour stocker les nombres 42, 3.14 et 18 dans une seule variable tab,
on peut écrire en Javascript :
var tab = [42, 3.14, 18];
On dit alors que tab est un tableau de nombres, de longueur 3 (puisqu'il
a trois cases).
On peut aussi créer un tableau de chaînes de caractères ["tableau", "de", "quatre", "cases"]
ou un tableau de booléens [true, true, true, true, true, false].
Si on dispose d'un tableau stocké dans une variable t, on peut écrire t.length
pour récupérer la longueur du tableau, c'est-à-dire son nombre de cases.
Exécuter les instructions var tab=[1,2,1,2]; console.log(tab.length); dans
la console du navigateur affichera le nombre 4 dans la console.
Pour accéder à une case d'un tableau, on écrit le nom de la variable contenant le tableau,
suivi de crochets qui entourent le numéro de case souhaité, sachant que la première case
d'un tableau est numérotée 0. Ainsi, on peut manipuler la première case d'un tableau tab comme
une variable, en la désignant par le code tab[0], soit pour lire ce qu'elle contient,
soit pour changer sa valeur.
Par exemple exécuter les instructions var tab=[1,2,1,2]; tab[0]=3; tab[1]=tab[0]+2; console.log(tab[1]);
dans la console du navigateur affichera 5 dans la console.
Si l'on veut faire une action sur toutes les cases d'un tableau,
il est possible de répéter cette action sur toutes les cases à l'aide d'une boucle,
en utilisant un compteur qui va stocker le numéro de la case où on est en train d'effectuer l'action.
C'est ce qu'on appelle un parcours de tableau.
Lisez attentivement cet énoncé de TP/TD
en suivant les instructions.
En cas d'interrogation,
faites appel à moi,
que ce soit pour en savoir plus sur un des points abordés pendant le TP, ou
pour savoir comment effectuer une des tâches demandées (numérotées pour pouvoir
y faire référence simplement).
Surtout
ne restez pas bloqué(e) sur une des questions.
Entre parenthèses, à côté des titres de sous-sections, est indiqué
le temps que vous avez dû passer à effectuer les étapes précédentes.
Au cours de ce TP, nous allons simuler un championnat de handball.
Si vous n'aimez pas le handball et que vous préférez travailler sur un
autre énoncé de TP, cliquez
ici.
Nous allons tout d'abord créer la liste des équipes, leur niveau,
leur nombre de points, et afficher la liste des équipes et le nombre de points
de chacune.
question(); ?>Créez un dossier dédié à ce TP4
(de la même manière que vous en aviez créé un dédié au TP1, au TP2 et au TP3).
question(); ?>Enregistrez-y ce fichier
M1202-TP4.html.
question(); ?>Lisez le code de l'algorithme fonctionPrincipale
du fichier : il crée un tableau
equipe de chaînes de caractères qui contient le nom
de chaque équipe, et un tableau
niveau qui contient un nombre indiquant si
c'est une bonne équipe (si le nombre est élevé) ou une mauvaise (si le nombre est
petit). Par exemple, le Paris St-Germain est une bonne équipe, de niveau 5.
Pour simuler le championnat de handball, il va falloir commencer
par créer le tableau des scores de chaque équipe, qui gagne trois points
pour une victoire, un point pour un match nul et aucun point pour une défaite.
Les scores vont donc être stockés dans un tableau d'entiers :
question(); ?>dans l'algorithme fonctionPrincipale,
créez ce tableau d'entiers de 20 cases,
appelez-le score, et initialisez tous les scores à 0 point.
Après la fin de l'algorithme
fonctionPrincipale, créez un algorithme
question(); ?>afficheEquipes
qui prend en entrée un tableau de chaînes de caractères
equipe et affiche le nom
de chaque équipe à l'écran, à tour de rôle (rappelez-vous de l'algorithme
affiche
qui prend en entrée une chaîne de caractères et l'affiche dans la page web). Cet algorithme
afficheEquipes ne renvoie rien.
Pour tester l'algorithme
afficheEquipes,
question(); ?>appelez-le en
mettant comme variable d'entrée la variable equipe.
De la même manière que pour l'algorithme
afficheEquipes,
question(); ?>créez un algorithme
affichePoints
qui prend en entrée un tableau de chaînes de caractères
tab, ainsi qu'un
tableau d'entiers
score, et affiche, pour chaque case de
tab :
- le contenu de cette case
- ainsi que le contenu de la case du tableau score associée (c'est-à-dire
celle qui a le même numéro)
Pour tester l'algorithme
affichePoints,
question(); ?>appelez-le en
mettant comme variables d'entrée la variable
equipe
et la variable
score.
Par exemple, la première ligne affichée en choisissant en premier paramètre d'entrée
le fichier de noms d'équipe est : "Paris St-Germain : 0".
Nous allons maintenant simuler une rencontre entre deux équipes, l'équipe
numéro
i et la numéro
j.
Par exemple, si
i vaut 0 et
j vaut 1, c'est la rencontre
classique PSG-OM (bon en réalité ce n'est pas vraiment un classique en handball, il aurait mieux valu dire Montpellier contre Chambéry par exemple en handball masculin ou Besançon Metz en handball féminin, mais je n'allais quand même pas réécrire tout le TP...).
question(); ?>Créez un algorithme joueUnMatch
qui :
- prend en entrée les numéros des deux équipes qui jouent,
et les tableaux nécessaires,
- tire au hasard un nombre aléatoire
entre 0 et 5 pour décider le nombre de buts de chaque équipe du match
(rappelez-vous de l'algorithme nombreAleatoire qui prend en entrée
deux entiers a et b et qui renvoie un nombre aléatoire
choisi entre a et b),
- puis renvoie en sortie le tableau
des scores mis à jour en fonction des points du vainqueur (ou du match nul).
question(); ?>A l'intérieur de l'algorithme joueUnMatch,
ajoutez une instruction pour afficher le nombre de buts marqués par chaque équipe, avec
un message du genre : "Match équipe 0 contre équipe 1 / Paris St-Germain contre Olympique de Marseille / Résultat : 3-3".
question(); ?>A l'intérieur de l'algorithme fonctionPrincipale,
ajoutez une instruction pour simuler un match entre le Paris St-Germain et l'Olympique
de Marseille (en utilisant un appel à l'algorithme
joueUnMatch).
question(); ?>Modifiez l'algorithme joueUnMatch
pour que le nombre de buts de chaque équipe soit tiré aléatoirement entre 0
et le niveau de l'équipe (stocké dans le tableau
niveau,
qui doit donc être transmis en entrée de l'algorithme).
En utilisant une (ou des) boucles dans l'algorithme
fonctionPrincipale,
question(); ?>appelez l'algorithme joueUnMatch
plusieurs fois afin que chaque équipe joue exactement une fois contre toutes les autres.