Крестик менен ноликтин алмашуусун талдоо

Бул сабакта мен сизге крестик менен ноликтин алмашуусун бир сап код менен кантип жасай тургандыгын көрсөткүм келет. Сиз чыгысында, мындай нерсе жасагансыз:

javascriptfunction 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++; // эсептегичти көбөйтөбүз
    });
  }
}

Мен маселени кыскараак чечүүнү сунуштайм. Өзүбүздүн 'оюнчулар' массивибизди жасайлы:

javascriptlet gamers = ['X', 'O'];

Көрүп тургандай, бул массивде крестиктин ачкычы 0, ал эми ноликтики - ачкычы 1. Ошол эле нерсени i % 2 үчүн да айтууга болот - крестик үчүн калдык 0 болот, ал эми нолик үчүн - 1.

Демек, бул нерсени ачкычтын ордуна колдонсо болот:

javascriptlet gamers = ['X', 'O'];
let key = i % 2;

console.log(gamers[key]);

Же дагы кыскараак:

javascriptlet gamers = ['X', 'O'];
console.log(gamers[i % 2]);

Же дагы кыскараак:

javascriptconsole.log(['X', 'O'][i % 2]);

Эми start функциябыздын кодун жөнөкөйлөтөлү:

javascriptfunction start(cells) {
  let i = 0;

  for (let cell of cells) {
    cell.addEventListener('click', function() {
      this.textContent = ['X', 'O'][i % 2];
      i++;
    });
  }
}
Задание 1

Өз алдынча, менин кодумга карабастан, сүрөттөлгөн оңдоону киргизиңиз.

Задание 2

Азыр каалаган уячага чексиз сандага чыкылдатуу жасап, мисалы, крестикти ноликке өзгөртсө болот. Муну оңдоп.