Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Suivre le score et gagner

C'est la 7e étape sur 11 du tutoriel de création d'un jeu de casse-briques en pur JavaScript. Dans cet article, nous allons ajouter un système de score à notre jeu. Avoir un score peut rendre le jeu plus intéressant — vous pouvez essayer de battre votre propre meilleur score ou celui de votre ami. Nous ajoutons également une condition de victoire, qui est si vous parvenez à détruire toutes les briques.

Ajouter le texte du score à l'affichage du jeu

Ajoutons une nouvelle variable juste après let derniereChronologie pour stocker le score :

js
let score = 0;

Ajoutez une fonction dessinerScore() pour afficher le score actuel sur le canvas :

js
function dessinerScore() {
  ctx.font = "18px Arial";
  ctx.fillStyle = "#0095dd";
  ctx.textBaseline = "top";
  ctx.textAlign = "left";
  ctx.fillText(`Points : ${score}`, 5, 5);
}

La méthode ctx.fillText() prend le texte à rendre ainsi que les coordonnées x et y où le dessiner. Dans notre cas, le texte du score est bleu, de taille 18 pixels, et utilise la police Arial. Définir textBaseline sur "top" positionne le haut du texte à la coordonnée y donnée.

Appelez dessinerScore() à l'intérieur de actualiser(), après avoir dessiné les briques :

js
function actualiser(chronologie) {
  // ...
  for (const brique of briques) {
    brique.draw();
  }
  dessinerScore();

  requestAnimationFrame(actualiser);
}

Mettre à jour le score lorsque les briques sont détruites

Nous augmentons le nombre de points chaque fois que la balle touche une brique. Ajoutez score += 10; à la méthode enCollision() existante de la brique, après avoir supprimé la brique des deux tableaux :

js
class Brique extends ObjetJeu {
  // ...
  enCollision() {
    briques.splice(briques.indexOf(this), 1);
    elementsCollision.splice(elementsCollision.indexOf(this), 1);
    score += 10;
  }
}

C'est tout pour l'instant — rechargez votre index.html et vérifiez que le score se met à jour à chaque fois qu'une brique est touchée.

Comment gagner ?

Ajoutons le code suivant dans votre fonction actualiser(), après l'appel à dessinerScore() :

js
if (briques.length === 0) {
  alert("Vous avez gagné, félicitations !");
  location.reload();
  return;
}

Si il n'y a plus de briques, alors nous affichons le message de victoire, en redémarrant le jeu une fois que l'alerte est fermée.

Mettez également à jour la condition while dans deplacerBalle() pour arrêter le mouvement de la balle dès que la dernière brique est détruite :

js
function deplacerBalle(dt) {
  while (dt > 0 && briques.length > 0) {
    // ... mouvement et code de collision existants ...
  }
}

Cela empêche la balle de sortir des limites pendant le temps restant dans l'image après que le·la joueur·euse a déjà gagné·e.

Comparer votre code

Voici ce que vous devez avoir jusqu'à présent, en cours d'exécution en direct. Pour voir son code source, cliquez sur le bouton « Exécuter ».

Prochaines étapes

Les défaites et les victoires sont toutes deux implémentées, ce qui signifie que le cœur de la jouabilité de notre jeu est terminé. Maintenant, ajoutons quelque chose en plus — nous donnons au·à la joueur·euse trois vies au lieu d'une seule.