J'ai un problème. J'essaye de faire un jeu de tetris en javascript (pour apprendre). Cependant, je ne peux pas utiliser la fonction setInterval (ou setTimeout). Ce que je veux faire est de changer la couleur du prochain cas tous les 2000ms.Tetris dans Javascript: setInterval setTimeout comportement
HTML CODE:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>PROJET : PROGRAMMATION COTE CLIENT</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
<div class="all">
<div id="A">
<span id="pos1A"></span>
<span id="pos2A"></span>
<span id="pos3A"></span>
<span id="pos4A"></span>
<span id="pos5A"></span>
<span id="pos6A"></span>
<span id="pos7A"></span>
<span id="pos8A"></span>
<span id="pos9A"></span>
<span id="pos10A"></span>
</div>
</div>
<script src="classes.js"></script>
<script src="indexjs.js"></script>
</body>
</html>
CSS CODE:
.all {
display: flex;
flex-direction: column;
}
.all > div {
display: flex;
flex-direction: row;
}
.all > div > span {
width: 20px;
height: 20px;
border: 1px solid gray;
}
JS CODE:
var array = ['pos1A','pos2A','pos3A','pos4A','pos5A','pos6A','pos7A','pos8A','pos9A','pos10A '];
function downmove(i) {
var element = document.getElementById(array[i]);
element.style.backgroundColor = 'green';
console.log(element);
}
var i;
for(i=0;i<10;i++) {
setInterval(downmove(i),2000);
}
Je veux que chaque bloc pour changer la couleur, un par un, mais en réalité il colore tout la ligne d'affilée. C'est comme si mon intervalle ne fonctionnait pas.
lecture [la documentation] (https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval) est toujours utile. Vous devez également supprimer la boucle 'for', si vous utilisez' setInterval', ou utiliser 'setTimeout' à la place, auquel cas il y aura un problème de fermeture avec la valeur de' i' ... – Teemu
Merci. Je n'ai pas encore lu à propos de la fermeture, je pensais que je n'en avais pas besoin pour ce petit projet. – WaLinke