Ristikon ja nollan vuorottelun analysointi
Tällä oppitunnilla haluan näyttää sinulle, kuinka tehdä ristikon ja nollan vuorottelu yhdellä rivillä. Olet todennäköisesti tehnyt jotain tällaista:
function start(cells) {
let i = 0; // laskurin alkuarvo
for (let cell of cells) {
cell.addEventListener('click', function() {
if (i % 2 == 0) {
this.textContent = 'X';
} else {
this.textContent = '0';
}
i++; // kasvatetaan laskuria
});
}
}
Ehdotan tehtävän ratkaisemista lyhyemmin. Tehdään
taulukko 'pelaajistamme':
let gamers = ['X', 'O'];
Kuten näet, tässä taulukossa ristikon avain on
0 ja nollan - avain 1. Sama
voidaan sanoa i % 2:sta
- ristikon jäännös on 0 ja
nollan - 1.
Eli tätä voidaan käyttää avaimen sijaan:
let gamers = ['X', 'O'];
let key = i % 2;
console.log(gamers[key]);
Tai vielä lyhyemmin:
let gamers = ['X', 'O'];
console.log(gamers[i % 2]);
Tai vielä lyhyemmin:
console.log(['X', 'O'][i % 2]);
Yksinkertaistetaan nyt funktion start koodi:
function start(cells) {
let i = 0;
for (let cell of cells) {
cell.addEventListener('click', function() {
this.textContent = ['X', 'O'][i % 2];
i++;
});
}
}
Itsenäisesti, katsomatta koodiini, tee kuvattu muutos.
Missä tahansa solussa voi tällä hetkellä tehdä rajoittamattoman määrän napsautuksia, muuttaen esimerkiksi ristikon nollaksi. Korjaa tämä.