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.
<!DOCTYPE html>
<html><body>
<p id="compteur">0</p>
<script>
let n = 0;
let affichage = document.getElementById("compteur");
function incrementer() {
n = n + 1;
affichage.textContent = n;
}
setInterval(incrementer, 1000);
</script>
</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
<!DOCTYPE html>
<html><body>
<button id="lancer">Lancer un dé à 6 faces</button>
<p id="resultat">?</p>
<script>
let bouton = document.getElementById("lancer");
let resultat = document.getElementById("resultat");
function lancer() {
let de = Math.floor(Math.random() * 6) + 1;
resultat.textContent = de;
}
bouton.addEventListener("click", lancer);
</script>
</body></html>