Хрестик ва ноликни алмаштириш

Бу дарсда мен сизга хрестик ва ноликни алмаштиришни бир сатр кодда қандай қилишни кўрсатмоқчиман. Сиз эҳтимол, буни шундай қилгансиз:

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

Ҳозирда ҳар қандай ҳужайрага чексиз марта босиб, масалан, Х ни О га алмаштириш мумкин. Буни тузатинг.