Разбор чередование крестика и нолика
В данном уроке я хочу показать вам, как сделать чередование крестика и нолика в одну строчку. Вы скорее всего, сделали что-то такое:
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. To
же самое можно сказать и про i % 2
- для крестика остаток будет 0, а
для нолика - 1.
To есть эту штуку можно использовать вместо ключа:
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
Сейчас на любую ячейку можно делать неограниченное количество кликов, меняя, например, крестик на нолик. Исправьте это.