Um momento
Aula 12
Cursos / Jogo da Velha com HTML, CSS, e JavaScript
Movendo Função Callback pra fora do addEventListener

Summary

# Resumo da Aula

Olá pessoal, estamos de volta! Na aula de hoje, vamos desenvolver uma função chamada `jogar`, que irá conter toda a lógica do jogo, ao invés de mantê-la no event listener. 

## Passos Realizados

1. **Criação da Função `jogar`**:
   - Vamos mover a lógica para fora do event listener e encapsulá-la dentro da função `jogar`.
   - Definimos essa função usando a palavra-chave `function`, e a chamamos ao clicar.

2. **Modificação do Tabuleiro**:
   - Em vez de modificar o tabuleiro diretamente, decidimos criar uma cópia do tabuleiro usando `Object.assign()`.
   - Adicionamos uma nova propriedade ao novo objeto que representa o tabuleiro modificado, usando o `id` do evento.

3. **Uso de `let`**:
   - Alteramos a declaração do tabuleiro de `const` para `let`, pois precisamos redefini-lo durante o jogo.

4. **Remoção de Console Logs**:
   - Limpeza do código removendo alguns `console.log`.

5. **Adição de Eventos**:
   - A função `jogar` está funcionando apenas no primeiro espaço. Precisamos adicionar eventos a todos os elementos participantes do jogo.

## Próximos Passos

- Adicionar eventos para todos os espaços do tabuleiro de forma que todos possam ser interativos.
- Trabalhar em funcionalidades futuras, como replay, para acompanhar as jogadas feitas.

A aula está avançando bem, e continuaremos a implementação na próxima sessão.

Video Transcript

Olá pessoal, estamos de volta, então vamos continuar aqui. Então, o que a gente vai fazer nessa aula? Vamos fazer uma função aqui chamada jogar, para botar toda a lógica do jogo nessa função, em vez de pôr aqui dentro do event listener, tá bom? E vamos dar uns redtocks aqui dentro dessa função. Então, eu quero mover essa função aqui para fora, para uma função lá, e vamos chamar essa função de jogar, vou recortar, vou chamar a função de jogar, tá bom? Jogar. E vou definir essa função aqui fora, tá bom? Eu vou usar a palavra chave fã, que eu vou tirar isso certo. Aí vou dar o nome jogar. A função que tem nome jogar, e eu vou aventar quando argumento. Então, quando você vai dar o event listener, clique para jogar, e vamos ver se não deu problema. Está funcionando. Então, vamos fazer agora, a gente fez para um, vamos fazer para todos, tá bom? Então, vamos ver aqui. Antes disso, eu quero só dar um redtalk aqui nessa parte aqui. Vamos ver aqui, deixa eu ver. Eu estou modificando tabuleiro aqui, diretamente, mas eu queria fazer isso indiretamente pelo uso de, em vez de fazer isso aqui, eu quero criar um novo tabuleiro, e pintar por cima desse tabuleiro aqui. Se eu fizer essa maneira, usando princípios de programação funcional, eu posso até no futuro, a gente pode adicionar a função de dar o replay, para saber qual cara jogada que a gente fez desde o começo, tá bom? Então, em vez de modificar o tabuleiro diretamente, eu vou criar um novo objeto que é a cópia desse cara, e essa cópia vai ter a propriedade modificada. Normalmente, pode fazer isso usando object assign, tá bom? Então, aqui vou fazer assim, ó. Tabuleiro vou redefinir usando object.assign, e vou criar um novo objeto, vou copiar as propriedades do tabuleiro, tá? Como segundo argumento, e vou adicionar uma nova propriedade, que vai ser, nesse caso, o nome da propriedade será o id do evento, que vai estar aqui. Então, vou dizer event target id, e vou botar jogador, tá? Então, o que é isso? O object.assign, o object é o ponto assign, é uma função que você vai chamar, você cria um primeiro argumento, um object. Vamos copiar as propriedades do tabuleiro para esse novo object, e também vamos copiar mais ainda, vamos redefinir a propriedade aqui, usando o id do elemento, que, nesse caso, seria esquerda acima, aí, por exemplo, esse esquerda acima iria ser substituído aqui, tá? E iria ser dessa maneira aqui, jogador seria x no começo, tá? E copiar esses carros para o novo tabuleiro, tá bom? Precisa dessas coisas aqui, senão ele vai substituir o nome, né? Aqui, tá bom? Da propriedade. Então, com isso, eu vou remover esse cara aqui, vamos ver se não deu problema. Ah, vai dar problema, porque o tabuleiro é definido como const, tá? Então, se clicar dá problema aqui. Tá bom? Envale o assignment const tabuleiro, porque a gente tem que mudar isso para let. Então, o tabuleiro pode ser redefinido, então vou usar let em vez de const. Const só pode definir uma vez, não pode redefinir, o let pode redefinir à vontade, o valor da variável. Tá bom? Então, é isso e... Deixa eu remover esse console log, remover esse console log. Que mais agora? Vamos pôs esse cara na variável? Eventful target. Depois, vamos depois, tá bom? Então, tem aqui a função joga, você vai só funcionando no primeiro espaço, nos outros não funcionam, para... Eu devia salvar. O caderno tá dando auto reload. Tá bom? Então, vamos agora fazer o seguinte. E vou fazer esse cara para todos, adicionar um evento ou 20 para todos esses caras aqui. A gente só tem para o esquerda acima, então tem que fazer os outros.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: