Таҳлили алтернативии X ва O

Дар ин дарс ман мехоҳам ба шумо нишон диҳам, ки чӣ тавр алтернативии X ва O-ро дар як сатр сохтан мумкин аст. Шумо эҳтимолан, чизе ба ин монанд сохтаед:

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'];

Чунон ки шумо мебинед, дар ин массив X калиди 0 дорад, ва O - калиди 1. Ҳамон чизро метавон дар бораи i % 2 гуфт - барои X боқимонда 0 хоҳад буд, ва барои O - 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

Ҳоло ба ҳар ячейка метавон бешумор дафъа клик кард, масалан, X-ро ба O иваз кард. Инро ислоҳ кунед.