Analiza naprzemienności krzyżyka i kółka

W tej lekcji chcę ci pokazać, jak zrobić naprzemienność krzyżyka i kółka w jednej linii. Prawdopodobnie zrobiłeś coś takiego:

javascriptfunction start(cells) {
  let i = 0; // początkowa wartość licznika
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // zwiększamy licznik
    });
  }
}

Zaproponuję rozwiązanie zadania krócej. Zróbmy tablicę naszych 'graczy':

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

Jak widzisz, w tej tablicy krzyżyk ma klucz 0, a kółko - klucz 1. To samo można powiedzieć o i % 2 - dla krzyżyka reszta będzie 0, a dla kółka - 1.

To znaczy, że tego można użyć zamiast klucza:

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

console.log(gamers[key]);

Albo jeszcze krócej:

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

Albo jeszcze krócej:

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

Uprośćmy teraz kod naszej funkcji start:

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

Samodzielnie, nie podglądając w mój kod, wprowadź opisaną poprawkę.

Задание 2

Teraz na dowolną komórkę można wykonywać nieograniczoną liczbę kliknięć, zmieniając, na przykład, krzyżyk na kółko. Popraw to.