Como Fazer um Jogo da Velha no Scratch: Tutorial Completo Para 2 Jogadores

Jogo da velha no Scratch: aprenda passo a passo a criar a versão para 2 jogadores, com tabuleiro de 9 células, checagem de vitória e botão de reiniciar.
O jogo da velha no Scratch é um dos melhores projetos para dar um salto de nível: ele parece simples, todo mundo conhece as regras, mas para fazê-lo funcionar você vai usar listas, variáveis, mensagens e operadores lógicos. Ou seja, os mesmos conceitos que aparecem em jogos muito maiores, só que num tabuleiro de 9 casas. Neste tutorial você vai montar a versão para 2 jogadores no mesmo computador: um clica para marcar X, o outro clica para marcar O, e o jogo avisa quem venceu ou se deu empate.
Se este é o seu primeiro projeto na plataforma, vale dar uma olhada antes no nosso guia de como criar um jogo no Scratch, que apresenta o editor, o palco e os blocos básicos. Com isso fresco na cabeça, o jogo da velha flui muito melhor.
O que vamos construir
Antes de arrastar qualquer bloco, vale entender o plano inteiro:
- Um tabuleiro com 9 células clicáveis, cada uma podendo mostrar vazio, X ou O.
- Uma lista com 9 itens que guarda o estado do tabuleiro na memória do jogo.
- Uma variável de vez que diz de quem é o turno: X ou O.
- Um script que, ao clicar numa célula vazia, marca o símbolo do jogador da vez e passa o turno.
- Uma checagem das 8 combinações de vitória depois de cada jogada.
- Mensagem de vitória ou empate e um botão de reiniciar.
Parece bastante coisa, mas cada parte é curta. Vamos por ordem.
Montando o tabuleiro do jogo da velha no Scratch
Existem dois caminhos para o visual e vamos usar os dois juntos:
A grade vai no pano de fundo. Clique no palco, vá na aba Pano de fundo e desenhe duas linhas verticais e duas horizontais formando a cerquilha clássica. Use linhas grossas e cores fortes para ficar legível.
As células são 9 atores. Crie um ator chamado celula1 e desenhe para ele três fantasias: uma chamada vazio (pode ser um quadrado quase transparente, só para ter área de clique), uma chamada X e uma chamada O. Capriche no X e no O porque eles são a cara do jogo.
Agora duplique esse ator 8 vezes, clicando com o botão direito sobre ele e escolhendo duplicar. Renomeie para celula2 até celula9 e posicione cada um dentro de um espaço da grade. A numeração importa: pense no tabuleiro como uma leitura de livro, células 1, 2 e 3 na linha de cima, 4, 5 e 6 no meio, 7, 8 e 9 embaixo. Essa ordem vai casar com a lista daqui a pouco.
Dica de organização: segure o ator e observe as coordenadas x e y no painel. Alinhar as células usando os mesmos valores de y por linha deixa o tabuleiro simétrico.
A lista que guarda o estado do tabuleiro
O visual mostra o jogo para as pessoas, mas o Scratch precisa de uma memória própria para saber o que há em cada casa. É aqui que entra a lista.
Em Variáveis, clique em Criar uma lista e chame de tabuleiro. Ela vai ter sempre 9 itens, um por célula, contendo o texto vazio, X ou O.
No palco (ou num ator de controle, como preferir), monte o script de preparação:
- quando bandeira verde for clicada
- apagar todos de tabuleiro
- repita (9) vezes: adicionar (vazio) a tabuleiro
Pronto: toda vez que o jogo começa, a lista nasce com 9 itens vazio. Se quiser conferir, deixe a lista visível no palco durante os testes e esconda depois com o bloco esconder lista.
A variável da vez
Crie uma variável chamada vez. Ela guarda X ou O e responde à pergunta mais importante do jogo: quem joga agora?
No mesmo script da bandeira verde, adicione mudar vez para (X). O X sempre começa, como manda a tradição. Deixe a variável visível no palco: ela funciona como um aviso natural de "é a sua vez" para os dois jogadores.
Clicando na célula: marcar X ou O
Agora a parte central. Abra o ator celula1 e monte este script:
- quando este ator for clicado
- se ( (item (1) de tabuleiro) = (vazio) ) então:
- substituir item (1) de tabuleiro por (vez)
- mudar fantasia para (vez)
- se ( (vez) = (X) ) então: mudar vez para (O), senão: mudar vez para (X)
- enviar (checar) para todos
Leia com calma o que acontece: o clique só vale se a casa estiver vazia (por isso o primeiro se). Valendo, a lista é atualizada com o símbolo do jogador da vez, a fantasia muda para mostrar o X ou o O na tela, o turno passa para o outro jogador e uma mensagem checar avisa o jogo de que é hora de procurar um vencedor.
Um truque que economiza trabalho: como as fantasias se chamam exatamente X e O, o bloco mudar fantasia para (vez) aceita a variável direto. Nada de duplicar blocos para cada símbolo.
Copie esse script para as outras 8 células arrastando-o sobre cada ator na lista de atores. Só não esqueça do detalhe crucial: em cada célula, troque o número do item. A celula5 usa item (5) de tabuleiro e substituir item (5), e assim por diante. Errar esse número é o bug mais comum do projeto, então confira os 9 com atenção.
Checando as 8 combinações de vitória
No jogo da velha existem exatamente 8 jeitos de vencer: 3 linhas horizontais, 3 colunas verticais e 2 diagonais. Com a nossa numeração de leitura de livro, as combinações são:
- Linhas: 1-2-3, 4-5-6, 7-8-9
- Colunas: 1-4-7, 2-5-8, 3-6-9
- Diagonais: 1-5-9, 3-5-7
A checagem mora num ator de controle (pode ser um ator invisível chamado juiz). Ele escuta a mensagem enviada pelas células:
- quando eu receber (checar)
- Para cada combinação, um bloco se ... então com operadores dentro.
Vamos montar a primeira linha como exemplo. Dentro do se, encaixe um operador e ligando duas comparações: ( (item (1) de tabuleiro) = (item (2) de tabuleiro) ) e ( (item (2) de tabuleiro) = (item (3) de tabuleiro) ). Isso diz: casa 1 igual à casa 2, e casa 2 igual à casa 3.
Só que tem uma pegadinha: três casas vazias também são iguais entre si! Então acrescente mais um e com a condição não ( (item (1) de tabuleiro) = (vazio) ). A frase completa fica: as três casas são iguais e não estão vazias. Se isso for verdadeiro, temos um vencedor, e o símbolo dele é o item (1) de tabuleiro daquela combinação.
Repita a estrutura para as outras 7 combinações, trocando apenas os números dos itens. Sim, são 8 blocos parecidos, e está tudo bem: duplicar um bloco pronto com o botão direito e ajustar os números leva poucos minutos. Essa repetição é a lógica pura do jogo da velha, sem nenhuma linha de código de texto, tudo em blocos de encaixar.
Vitória e empate
Quando uma combinação bate, o juiz anuncia. Dentro do se vitorioso, use dizer (junte (item (1) de tabuleiro) (venceu!)) por (2) segundos e uma variável jogo acabou mudada para sim. Nas células, acrescente essa variável na condição de clique: só marca se a casa está vazia e o jogo não acabou. Assim ninguém continua jogando depois do fim.
E o empate? Se nenhuma das 8 checagens encontrou vencedor, o juiz conta as casas preenchidas. O jeito simples: uma variável jogadas que soma 1 a cada clique válido. Se ( (jogadas) = (9) ) e ninguém venceu, é a velha: dizer (Deu velha! Empate.) por (2) segundos.
O botão de reiniciar
Crie um último ator, um botão bonito escrito "Jogar de novo", com este script:
- quando este ator for clicado
- enviar (reiniciar) para todos
Agora cada parte do jogo reage à mensagem. Nas 9 células:
- quando eu receber (reiniciar)
- mudar fantasia para (vazio)
E no script de controle:
- quando eu receber (reiniciar)
- apagar todos de tabuleiro, repita (9) vezes: adicionar (vazio) a tabuleiro
- mudar vez para (X), mudar jogadas para (0), mudar jogo acabou para (não)
Essa é a beleza do enviar para todos: um clique dispara a limpeza em todos os atores ao mesmo tempo, sem você precisar encadear nada manualmente. É o mesmo padrão de mensagens que usamos no jogo da memória no Scratch, outro projeto de tabuleiro que combina muito bem como próximo passo, já que reaproveita fantasias, listas e mensagens. E se quiser um jogo de palavras com as mesmas listas e variáveis, o jogo da forca no Scratch é um ótimo degrau seguinte.
Remix e desafios extras
Com o jogo funcionando, hora de deixá-lo com a sua cara:
- Tema visual: troque X e O por gatos e cachorros, planetas e estrelas, o que você quiser. Basta redesenhar as fantasias, a lógica continua igual (só renomeie as fantasias e os valores da lista juntos).
- Sons: adicione um som de "pop" no clique válido e uma fanfarra na vitória com o bloco tocar som até o fim.
- Placar de partidas: o desafio extra clássico. Crie as variáveis
vitórias do Xevitórias do O, some 1 na variável certa quando ojuizencontrar um vencedor e mostre as duas no palco. De repente o jogo vira uma melhor de 5 no recreio. - Compartilhe e convide remix: publique o projeto na comunidade do Scratch com instruções claras. Ver outra pessoa remixar o seu tabuleiro é uma das melhores sensações da plataforma.
Se você é professor ou professora, o jogo da velha rende uma aula inteira sobre lógica: dá para discutir com a turma por que existem exatamente 8 combinações de vitória antes mesmo de abrir o computador.
Quando o Scratch ficar pequeno
Repare no que você acabou de fazer: representou um tabuleiro como estrutura de dados, controlou turnos com uma variável de estado, validou jogadas e implementou condições de fim de jogo. Esses são conceitos de verdade, os mesmos que um programador usa em qualquer engine profissional.
Em algum momento, você vai querer mais: uma inteligência artificial para jogar contra o computador, partidas online, telas de menu elaboradas. Quando esse dia chegar, o caminho natural é dar o próximo passo com uma engine completa. Leia o nosso guia sobre quando migrar do Scratch para a Godot para saber se é a sua hora. A boa notícia: tudo o que você aprendeu aqui, listas, estados, mensagens e lógica de vitória, viaja com você.
Perguntas frequentes
Dá pra fazer jogo da velha no Scratch sem saber programar?
Dá, sim. O Scratch usa blocos de encaixar em português, então você monta toda a lógica arrastando peças. Este tutorial usa apenas blocos básicos: eventos, variáveis, listas e operadores. É um ótimo segundo projeto depois de um jogo mais simples de movimento.
Preciso de 9 atores ou posso usar só um?
A forma mais fácil de aprender é com 9 atores, um por célula, cada um com três fantasias (vazio, X e O). Existe uma versão avançada com clones que usa um ator só, mas ela exige entender clonagem e identificadores, o que complica o primeiro contato.
Como o Scratch sabe quem ganhou o jogo da velha?
O jogo guarda o estado das 9 células numa lista. Depois de cada jogada, um bloco de checagem compara os itens da lista nas 8 combinações possíveis de vitória (3 linhas, 3 colunas e 2 diagonais) usando blocos de operadores como igual, e, ou.
Como faço o botão de reiniciar funcionar?
Crie um ator de botão com o bloco quando este ator for clicado enviando a mensagem reiniciar para todos. Cada célula recebe essa mensagem, volta para a fantasia vazio, e o script principal limpa a lista do tabuleiro e devolve a vez para o jogador X.
O jogo da velha no Scratch pode ter placar de partidas?
Pode e é um desafio ótimo. Crie duas variáveis, vitórias do X e vitórias do O, e some 1 na variável certa sempre que a checagem de vitória encontrar um vencedor. Mostre as duas no palco e você tem um placar de melhor de 5 entre amigos.


