X ja O vaheldumise analüüs

Selles õppetükis tahan näidata teile, kuidas teha X ja O vaheldumist ühe reaga. Te olete tõenäoliselt teinud midagi sellist:

javascriptfunction start(cells) {
  let i = 0; // loenduri algväärtus
  
  for (let cell of cells) {
    cell.addEventListener('click', function() {
      if (i % 2 == 0) {
        this.textContent = 'X';
      } else {
        this.textContent = '0';
      }
      
      i++; // suurendame loendurit
    });
  }
}

Pakuksin lühema lahenduse. Teeme massiivi oma 'mängijatest':

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

Nagu näete, on selles massiivis ristil võti 0 ja ringil - võti 1. Sama võib öelda ka i % 2 kohta - ristiku puhul on jääk 0 ja ringi puhul - 1.

See tähendab, et seda saab kasutada võtme asemel:

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

console.log(gamers[key]);

Või veel lühem:

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

Või veel lühem:

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

Lihtsustame nüüd meie funktsiooni start koodi:

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

Tehke iseseisvalt, minu koodi peale vahtimata, kirjeldatud muudatus.

Задание 2

Praegu saab mis tahes lahtrile teha piiramatu arvu klikke, muutes näiteks risti ringiks. Parandage see.