Análise da alternância entre X e O
Nesta lição, quero mostrar a vocês como fazer a alternância entre X e O em uma única linha. Você provavelmente fez algo assim:
function start(cells) {
let i = 0; // valor inicial do contador
for (let cell of cells) {
cell.addEventListener('click', function() {
if (i % 2 == 0) {
this.textContent = 'X';
} else {
this.textContent = '0';
}
i++; // incrementa o contador
});
}
}
Vou propor resolver o problema de forma mais curta. Vamos fazer
um array dos nossos 'jogadores':
let jogadores = ['X', 'O'];
Como você vê, neste array, o X tem a
chave 0, e o O - a chave 1. A
mesma coisa pode ser dita sobre i % 2
- para o X, o resto será 0, e
para o O - 1.
Ou seja, podemos usar isso no lugar da chave:
let jogadores = ['X', 'O'];
let chave = i % 2;
console.log(jogadores[chave]);
Ou ainda mais curto:
let jogadores = ['X', 'O'];
console.log(jogadores[i % 2]);
Ou ainda mais curto:
console.log(['X', 'O'][i % 2]);
Vamos simplificar agora o código da nossa função start:
function start(cells) {
let i = 0;
for (let cell of cells) {
cell.addEventListener('click', function() {
this.textContent = ['X', 'O'][i % 2];
i++;
});
}
}
Por conta própria, sem espiar o meu código, faça a alteração descrita.
Atualmente, é possível clicar em qualquer célula um número ilimitado de vezes, alterando, por exemplo, um X para um O. Corrija isso.