Examen DCC — janvier 2024
- Dans le cadre de cet examen de Développement Côté Client, vous devez uniquement vous focaliser sur les fichiers
JavaScript. Mis à part, ajouter ou modifier une balise
script
, on ne vous demande pas de modifier le code HTML ni le code CSS qui s'y rapporte. - Cet examen dure maximum 4 heures.
- Vous devez respecter les bonnes pratiques vues en classe.
- Tous les sélecteurs CSS dont vous avez besoin (pour cibler les éléments du DOM) ainsi que les paramètres du jeu sont
définis dans l'objet
settings
du fichiersrc/js/settings.js
. - Vous pouvez, si vous le souhaitez, réaliser l'examen en TypeScript.
-
Initialiser quelques données :
- Créez une classe
Player
avec deux propriétés : le nom (name
), passé en paramètre au constructeur, et la santé (health
), initialisée à 100 (cf.settings.health_max_value
). - Déclarez un tableau contenant deux joueurs dans l'ordre avec comme noms respectifs
You
(cf.settings.defaultPlayerName1
) etMonster
(cf.settings.defaultPlayerName2
).
- Créez une classe
-
Soumission du formulaire
#play-game
:-
Mettez à jour le nom du premier joueur dans le tableau (
players[0].name
) en utilisant la valeur de l'input. Par exemple :event.currentTarget.querySelector('input').value
. 👌 -
Mettez à jour le contenu textuel de la carte du premier joueur avec l'identifiant
#player-name
(cf.strings.playerNameId
). -
Faites disparaître le formulaire en lui ajoutant la classe
visuallyhidden
. -
Faites apparaître l'élément
div#controls
en lui retirant la classevisuallyhidden
.
-
-
Écouteur d'événement sur le bouton
#attack
:Quand on clique, ajoutez un nombre aléatoire entre 0 et -7 à la santé de chaque joueur (cf.
settings.actions.attack.max_impact
). -
Écouteur d'événement sur le bouton
#special-attack
:Quand on clique, ajoutez un nombre aléatoire entre 0 et -14 à la santé de chaque joueur (cf.
settings.actions.special_attack.max_impact
). -
Écouteur d'événement sur le bouton
#heal
:Quand on clique, ajoutez un nombre aléatoire entre 0 et +7 à la santé de chaque joueur (cf.
settings.actions.heal.max_impact
). -
Fonction générique pour les boutons :
Créez une fonction générique utilisant l'attribut
data-name
du bouton pour accéder à l'objet correspondant danssettings.actions
. Essayez de condenser les trois fonctions existantes en une seule. Si vous disposez d'une fonction générique qui s'exécute au clic, l'expressionsettings.actions[event.currentTarget.dataset.name].max_impact
vous donne la valeur maximale en fonction du bouton qui vient d'être cliqué. -
Vérification de la mort des joueurs : Dans la fonction générique, vérifiez si l'un des joueurs est mort. Si c'est le cas :
- Affichez le formulaire
#play-game
en retirant la classevisuallyhidden
. - Cachez la
div.controls
en ajoutant la classevisuallyhidden
. - Ajoutez un message dans le formulaire
#play-game
indiquant le perdant (utilisezsettings.messages.lost()
).
- Affichez le formulaire
-
Vérification du bouton "give-up" :
Dans la fonction générique, testez si le bouton cliqué a l'attribut
data-name="give-up"
.- Si c'est le cas, effectuez les mêmes actions que pour la vérification de la mort des joueurs.
Voici une capture d'écran annotée, présentant des informations sur les classes et identifiants les éléments HTML.
-
Soumission du formulaire après la fin du jeu :
- Réinitialisez la santé des deux joueurs à 100 (cf.
settings.health_max_value
). - Retirez le message
p.log__item
du formulaire. - Cachez le formulaire
#play-game
(retirez la classevisuallyhidden
). - Montrez la
div.controls
(ajoutez la classevisuallyhidden
à la div).
- Réinitialisez la santé des deux joueurs à 100 (cf.