Aula 13
Permitir Marcação do Bola no Jogo de Velha com HTML, CSS, e JavaScript
Summary
# Resumo da Aula sobre Manipulação de Eventos em um Jogo de Tabuleiro
## Adicionando Event Listeners
- Vamos adicionar um **event listener** para cada espaço do tabuleiro.
- Utilizando `Object.keys`, podemos obter todas as propriedades do objeto `tabuleiro`.
- Usaremos um loop `forEach` para iterar sobre essas propriedades e adicionar o event listener, que chama a função `jogar`.
## Verificando Espaços
- Antes de preencher o tabuleiro, devemos verificar se o espaço já está preenchido.
- Se um espaço estiver preenchido, a função retorna sem fazer nada. Caso contrário, marcará o espaço com o símbolo do jogador (X ou O).
## Implementação do Evento
- Ao clicar em um espaço, usamos `event.target` para identificar qual espaço foi clicado.
- Verificamos se o espaço correspondente no `tabuleiro` é `null`:
- Se sim, retornamos uma mensagem de que o espaço já está marcado.
```javascript
if (tabuleiro[espaço.id] !== null) {
console.log('Espaço já está marcado, retornando sem fazer nada');
return;
}
Marcação do Jogador
- Se o espaço não estiver preenchido, marcamos com o símbolo do jogador e adicionamos a classe correspondente no HTML.
Mudança de Turno
- Após uma jogada, mudamos o turno do jogador:
- Se o jogador atual for 1, muda para 2, e vice-versa.
jogador = (jogador === 1) ? 2 : 1;
Próximos Passos
- Por enquanto, implementamos a verificação de espaços e a mudança de jogadores.
- A lógica para verificar a vitória ainda precisa ser adicionada.
Conclusão
- Configuramos a interação básica do jogo, incluindo verificações de espaço e gerenciamento de turnos entre os jogadores.
Video Transcript
Fala pessoal, então vamos adicionar um event listener para cada espaço,
nesse caso aqui só tem um espaço da esquerda assim, mas a gente pode botar esse cara dentro de um loop
para repetir esse processo para todos os novos.
Para poder fazer isso, vou ter que precisar do ID de cada um,
esse ID corresponde às propriedades desse objeto chamado tabuleiro.
Para poder obter todos os propriedades de um objeto dentro de uma lista,
você pode usar o object.keys.
Então se você falar object.keys e passar o objeto tabuleiro,
ele vai te retornar uma lista com todas as propriedades,
como cada elemento da lista, por exemplo, espaço acima,
esquerda acima, centro acima, e assim por diante.
Aí você pode pegar esse cara, que é o resultado do object.keys,
e usar um loop para poder fazer substituir esse cara aqui com o valor de interação.
Vamos lá, pegar o object.keys, vou falar forEach, vou chamar, sei lá, nome do espaço,
vou falar posição, e vou pegar esse cara dentro desse cara.
Agora, posição vai ter esquerda acima ou centro acima, assim por diante,
em vez de dizer esquerda acima aqui, vou dizer posição.
Então ele vai pegar o espaço usando o ID, que é a posição,
e vai adicionar o event listener.
Aí quando você clicar nesses caras, vai funcionar, vai chamar a função jogar.
Está bom, então agora funciona para cada um.
Certo?
Legal.
Agora vamos aqui continuar.
Primeiro a gente tem que, antes de preencher o tabuleiro, a gente tem que checar,
vamos lá fazer o seguinte, vamos primeiro checar se o espaço não está preenchido.
Se já estiver preenchido, não precisa fazer nada, mas se não estiver preenchido,
é só por marcar se estiver passando nada.
Se não estiver preenchido, marque com o jogador x ou bola.
E depois vamos começar só assim, está bom?
Então vamos lá checar primeiro.
Vamos para o elemento dentro da variável, então vou chamar aqui constante,
espaço, igual ao evento, ponto, target.
Target é aquele que foi clicar, nesse caso vai ser o espaço.
Então vou usar esse cara aqui.
Então vou checar primeiro o tabuleiro.
Então tabuleiro, tabuleiro e vou assar a propriedade usando o espaço, ponto, ID,
que pode ser direita abaixo, centra abaixo, assim por diante.
Vamos ver se esse cara não é no.
Se esse cara aqui for no, a gente precisa fazer nada, só dar o return sem fazer nada.
Se não, você pode continuar, tá?
A fazer as coisas.
Vou dar um console logo para você ver.
Vou dizer espaço já está marcado, retornando sem fazer nada.
Vou adicionar esse console logo para a gente ver se a gente clicar novamente na mesma coisa,
se ele vai mostrar essa mensagem.
Deixa o re-iniciar o meu negócio aqui, reload, não sei o que que ele está funcionando.
Deixa eu abrir o console.
Vou clicar aqui, espaço já está marcado, tá errado isso.
Ah, peraí.
Vou botar 3 iguais.
Tabuleiro, espaço ID.
Se for no... oh, desculpa, se não for no, né?
Eu vou botar o sinal de exclamação, comparação rigorosa, tá bom?
Se o espaço não for no, significa que já está marcado.
Se não for no.
Cliquei, eu cliquei, eu vou clicar nesse de novo, disse.
Deu o centro acima.
Então, o espaço já está marcado, retornando sem fazer nada, tá?
E a mesma coisa para esse outro aqui, tá bom?
Então, vamos lá.
Já lidamos com isso.
Agora, se não tiver marco com jogador x ou o, a gente fez aqui.
Tabuleiro, não sei o que, marco com jogador e adicionou a classe.
Tá bom?
Agora, depois disso, a gente tem que verificar, tem que mudar o turno, né?
Para mudar o jogador.
Então, a gente pode dizer que o jogador agora vai ser o outro.
Ah, nesse caso, a gente tem que ver que qual é o jogador.
Ah, então, se o jogador agora, presente for jogador 1, você vai mudar para jogador 2, tá?
Se o jogador presente for jogador 1 e ele fez o seu movimento, é hora de mudar para jogador 2.
Você vai redefinir jogador para jogador 2.
Se não for jogador 1, só resta ser o jogador 2.
Então, você pode dizer jogador agora é jogador 1.
Se quiser, você pode refatorizar isso a sua maneira, tá?
Com isso, ele vai mudar o turno, tá?
Então, vamos ver se deu certo lá.
Clicou, clicou, clicou, clicou, fica mudando, tá?
O espaço já está marcado, se for diante.
Tá bom?
Então, a gente ainda não tem a cheque para vitória, esse cara seria ganhado ali, tá?
Então, acho que por essa aula já está suficiente.
Então, a gente definiu aqui o cheque aqui para ver se o espaço já teria sido...
Já estava para encher, se tivesse não precisou fazer nada, será retornado a função sem fazer nada.
Mas se esse cara aqui for...
Se o espaço não estiver para encher, ele continua a execução da função,
que vai marcar o tabuleiro com jogador x ou bola,
e adicionar aquela classe no HTML para poder mostrar o símbolo.
Aí, você muda o jogador usando esse simples if-else.
Se o jogador presente for 1, muda para o jogador 2.
Se não, se o jogador presente for 2, muda para o jogador 1.
Tá bom?
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: