Complément théorique#

Pour ce TP, vous aurez besoin de deux nouveautés JavaScript que nous n'avons pas vues dans le cours.

Exécuter du code régulièrement : setInterval#

Pour qu'un assistant fabrique des trombones automatiquement, on a besoin d'exécuter du code toutes les secondes sans que le joueur ne fasse rien. La fonction setInterval est faite pour ça :

setInterval(maFonction, 1000);

Cela signifie : « toutes les 1000 millisecondes (= 1 seconde), exécute maFonction ». Comme avec addEventListener, on passe le nom de la fonction sans parenthèses.

 1<!DOCTYPE html>
 2<html><body>
 3  <p id="compteur">0</p>
 4  <script>
 5    let n = 0;
 6    let affichage = document.getElementById("compteur");
 7
 8    function incrementer() {
 9        n = n + 1;
10        affichage.textContent = n;
11    }
12
13    setInterval(incrementer, 1000);
14  </script>
15</body></html>

Lancez le code ci-dessus : le nombre s'incrémente tout seul, une fois par seconde.

Tirer un nombre au hasard : Math.random et Math.floor#

Pour les mini-jeux, on aura besoin du hasard. JavaScript fournit la fonction Math.random() qui renvoie un nombre entre 0 (inclus) et 1 (exclu) :

let r = Math.random();   // par exemple 0.7321...

Pour faire un tirage avec 50% de chances, on peut écrire :

if (Math.random() < 0.5) {
    console.log("Pile");
} else {
    console.log("Face");
}

Pour obtenir un nombre entier entre 0 et 9 (inclus), on multiplie par 10 puis on arrondit vers le bas avec Math.floor :

let entier = Math.floor(Math.random() * 10);  // entier de 0 à 9
 1<!DOCTYPE html>
 2<html><body>
 3  <button id="lancer">Lancer un dé à 6 faces</button>
 4  <p id="resultat">?</p>
 5  <script>
 6    let bouton = document.getElementById("lancer");
 7    let resultat = document.getElementById("resultat");
 8
 9    function lancer() {
10        let de = Math.floor(Math.random() * 6) + 1;
11        resultat.textContent = de;
12    }
13
14    bouton.addEventListener("click", lancer);
15  </script>
16</body></html>