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>