Крестик менен ноликтин алмашуусун талдоо
Бул сабакта мен сизге крестик менен ноликтин алмашуусун бир сап код менен кантип жасай тургандыгын көрсөткүм келет. Сиз чыгысында, мындай нерсе жасагансыз:
function start(cells) {
let i = 0; // баштапкы мааниси
for (let cell of cells) {
cell.addEventListener('click', function() {
if (i % 2 == 0) {
this.textContent = 'X';
} else {
this.textContent = '0';
}
i++; // эсептегичти көбөйтөбүз
});
}
}
Мен маселени кыскараак чечүүнү сунуштайм. Өзүбүздүн 'оюнчулар' массивибизди жасайлы:
let gamers = ['X', 'O'];
Көрүп тургандай, бул массивде крестиктин
ачкычы 0, ал эми ноликтики - ачкычы 1. Ошол эле нерсени i % 2
үчүн да айтууга болот - крестик үчүн калдык 0 болот, ал эми
нолик үчүн - 1.
Демек, бул нерсени ачкычтын ордуна колдонсо болот:
let gamers = ['X', 'O'];
let key = i % 2;
console.log(gamers[key]);
Же дагы кыскараак:
let gamers = ['X', 'O'];
console.log(gamers[i % 2]);
Же дагы кыскараак:
console.log(['X', 'O'][i % 2]);
Эми start функциябыздын кодун жөнөкөйлөтөлү:
function start(cells) {
let i = 0;
for (let cell of cells) {
cell.addEventListener('click', function() {
this.textContent = ['X', 'O'][i % 2];
i++;
});
}
}
Өз алдынча, менин кодумга карабастан, сүрөттөлгөн оңдоону киргизиңиз.
Азыр каалаган уячага чексиз сандага чыкылдатуу жасап, мисалы, крестикти ноликке өзгөртсө болот. Муну оңдоп.