Analiza izmeničnega prepletanja križcev in krožcev

V tej lekciji vam želim pokazati, kako narediti izmenično prepletanje križca in krožca v eni vrstici. Verjetno ste naredili nekaj takega:

javascriptfunction start(cells) {
  let i = 0; // začetna vrednost števca
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // povečamo števec
    });
  }
}

Predlagam, da rešite nalogo na krajši način. Naredimo polje naših 'igralcev':

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

Kot lahko vidite, ima križec v tem polju ključ 0, krožec pa ključ 1. Enako velja za i % 2 - za križec bo ostanek 0, za krožec pa 1.

To pomeni, da lahko to uporabite namesto ključa:

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

console.log(gamers[key]);

Ali še krajše:

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

Ali še krajše:

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

Poenostavimo zdaj kodo naše funkcije start:

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

Samostojno, brez vpogleda v mojo kodo, vnesite opisano spremembo.

Задание 2

Trenutno je mogoče na katero koli celico narediti neomejeno število klikov, pri čemer se na primer križec spremeni v krožec. Popravite to.