// variables de vue const button = document.querySelector("input[type=submit]"); const select = document.querySelector("select"); const board = document.querySelector(".board"); const message = document.querySelector("#message"); let lights = null // state <-> tableau de booléen pour // stocker l'état des lumières // neighbors <-> tableau des voisins de chaque lumière let state = []; let neighbors = []; let newBoard = ( (size ) => { let frag = document.createDocumentFragment() // TODO // la fonction crée dans le dom la grille des lumières board.replaceChildren(frag) }); let calcNeighbours = ( (size) =>{ let res = []; for(let i = 0; i < size; i ++){ for(let j = 0; j < size; j++){ let v = []; v.push(i*size + j); if ( (j - 1) >= 0) v.push(i*size + j - 1); if ( (j + 1) < size) v.push(i*size + j + 1); if ( (i - 1) >= 0) v.push(size*(i-1) + j ); if ( (i + 1) < size) v.push(size*(i+1) + j); res.push(v) } } return res }); function play(){ let size = select.value; newBoard(size); neighbors = calcNeighbours(size); lights = document.querySelectorAll(".board span"); state = Array.from({length: size*size}, () => Math.random() < 0.5 ? 1:0); state.forEach((el,i)=>{ if (el) lights[i].classList.toggle("off"); }); message.textContent = ""; } // abonnements document .querySelector(".board") .addEventListener("click", ev => { // TODO // permet de choisir d'éteindre/allumer une lumière et // ses voisines // Il faut en outre detecter la fin de partie }); button.addEventListener("click",play); play();