fbpx
ArduinoNovidadePictoBloxRobótica Educacional

Snake Game: Jogo da cobrinha com Arduino e PictoBlox

O Snake Game, ou jogo da cobrinha como também é conhecido, é um dos jogos mais icônicos e nostálgicos da história dos videogames. O jogo consiste em controlar uma cobra que se movimenta pela tela, devorando itens (geralmente representados como comida) que aparecem aleatoriamente. A cada item consumido, a cobra cresce e o jogo fica mais difícil, pois o jogador deve evitar que a cobra colida com as paredes e com ela mesma.

O Snake Game surgiu na década de 1970, mas foi durante os anos 90 e início dos anos 2000 que o jogo ganhou popularidade, especialmente com sua inclusão nos telefones Nokia, sendo um dos primeiros jogos a ser amplamente jogado em dispositivos móveis.

Neste tutorial, vamos recriar esse jogo, dando vida ao Snake Game usando o Arduino e o PictoBlox, combinando programação e eletrônica para construir uma versão física e interativa. Ao final, você terá um jogo completo e funcional, pronto para ser jogado e personalizado, permitindo que você explore sua criatividade enquanto desenvolve habilidades valiosas em programação e eletrônica.

Figura 1 - Snake Game: Jogo da cobrinha com Arduino e PictoBlox
Figura 1 – Snake Game: Jogo da cobrinha com Arduino e PictoBlox.

MATERIAIS NECESSÁRIOS

1 x Placa UNO R3 compatível com Arduino UNO;
1 x Joystick Shield ou Módulo JoyStick Analógico 3 eixos Ky 023;
1 x Cabo USB tipo A – B;
Jumpers macho-fêmea (caso opte pela utilização do módulo joystick).

ESQUEMÁTICO DE LIGAÇÃO

A movimentação da cobrinha no jogo será controlada pelo joystick conectado ao Arduino. As imagens 1 e 2 detalham, respectivamente, a forma de conexão do Joystick Shield e do módulo Joystick à placa Uno.

Figura 2 – Encaixe do Joystick Shield ao Arduino UNO.

IMPORTANTE: No joystick há uma chave seletora entre 3V3 e 5V, para que funcione corretamente mantenha a chave na posição 5V.

Caso prefira utilizar o módulo Joystick, conecte os componentes conforme a Figura 3.

Figura 3 – Conexão do módulo Joystick ao Arduino UNO.

Ao montar seu circuito na protoboard, preste atenção nos seguintes pontos:

  • Conecte os pinos GND e + 5V do módulo joystick ao GND e VCC da placa UNO, respectivamente;
  • Ligue o pino VRx à porta analógica A0, o pino VRy à porta analógica A1 e o pino SW à porta digital 2 da placa UNO.

OBSERVAÇÃO: Caso queira saber mais sobre o módulo joystick acesse o tutorial “Como utilizar o módulo joystick KY-023 com Arduino“.

LIVE COM O PASSO A PASSO DO DESENVOLVIMENTO DO JOGO SNAKE GAME

O passo a passo para a construção do jogo Snake Game utilizando Arduino e PictoBlox foi explicado em detalhes durante uma live no canal Aplicar Ciências, conduzida por Gerson Sena. No vídeo, você pode acompanhar cada etapa do processo, desde a montagem do circuito até a programação, com dicas e explicações que facilitam a reprodução do projeto.


PROGRAMANDO O JOGO SNAKE GAME

Para entender como o Snake Game funciona com Arduino e PictoBlox, é importante compreender a lógica por trás do código que dá vida ao jogo. Nesta seção, entenderemos os passos necessários para criar os personagens, a cobra, o corpo da cobra, e a fruta, e também exploraremos o código detalhado que controla cada aspecto do jogo.
Para facilitar o entendimento, vamos seguir um passo a passo:

1 – Desenhar os atores:
Os personagens do nosso jogo serão a cobra, o corpo da cobra, e a fruta. Vamos desenhá-los usaremos a opção “Pintar” no PictoBlox, conforme a Figura 4.

Figura 4 – Desenho dos atores do jogo no PictoBlox.

Caso prefira, você pode baixar o arquivo para PictoBlox com os atores desenhados clicando aqui.

2 – Programar os atores:

a) Cobrinha
Após desenhar os atores, podemos partir para a programação, iniciando pelo código do ator Cobrinha. No jogo, a direção da cobrinha será controlado com base na leitura analógica dos pinos A0 e A1 da placa UNO. Dessa forma, precisamos sempre realizar a leitura dessas entradas analógicas para determinar a direção correta em que a cobrinha deve se mover.

Então, para guardar os valores das leituras, vamos criar duas variáveis: Leitura X para o pino A0, que controlará os movimentos horizontais (esquerda e direita), e Leitura Y para o pino A1, que controlará os movimentos verticais (cima e baixo). Em seguida, programaremos a lógica que definirá o movimento da cobrinha com base na comparação desses valores da seguinte forma:

  • Quando a leitura de X for menor que 300 a cobrinha deve se mover para a esquerda.
  • Quando a leitura de X for maior que que 700 a cobrinha deve se mover para a direita.
  • Quando a leitura de Y for menor que 300 a cobrinha deve se mover para baixo.
  • Quando a leitura de Y for maior que que 700 a cobrinha deve se mover para cima.
Código do ator Cobrinha
Figura 5 – Código do ator Cobrinha.

Agora, vamos configurar a movimentação da cobrinha no jogo. Quando a bandeira verde for clicada, a cobrinha deve começar a se mover imediatamente. Para isso, ela deve iniciar sua trajetória no centro do palco, com as coordenadas definidas em x = 0 e y = 0.

A cobrinha se moverá continuamente, mas o jogo será finalizado se ela tocar na borda do palco. Para detectar essa colisão, utilizaremos a estrutura condicional se-então. Se a cobrinha tocar na borda, a condição será verdadeira, e o jogo deverá terminar.

Para garantir que todos os outros atores e elementos do cenário sejam informados de que o jogo terminou, vamos utilizar o bloco de transmissão para enviar a mensagem “Game Over”. Esse bloco permite que o código de um ator se comunique com os demais, sincronizando as ações e garantindo que o jogo finalize corretamente quando necessário.

Código do ator Cobrinha
Figura 6 – Código do ator Cobrinha.

b) Maçã
No início do jogo, quando a bandeira verde for clicada, a maçã deve aparecer em um ponto aleatório da tela. Para isso, usaremos o bloco de movimento que define coordenadas aleatórias para a posição inicial da maçã.

A mecânica do jogo prevê que, quando a cobrinha tocar na maçã, ela desapareça e reapareça em um novo ponto aleatório. Isso manterá o desafio do jogo, pois a cobrinha precisará constantemente se reposicionar para alcançar a próxima maçã.

No código, utilizamos uma estrutura condicional se-então para verificar se a maçã está tocando na cobrinha. Se a condição for verdadeira, um ponto é adicionado à pontuação, a maçã desaparece brevemente e, após um curto intervalo, ressurge em uma nova posição aleatória na tela, pronta para ser capturada novamente. Dessa forma, é necessário adicionar mais uma variável: Pontos.

Código do ator Maça
Figura 7 – Código do ator Maçã.

c) Corpinho
Para programar o corpo da cobrinha, devemos garantir que ele cresça à medida que ela come a maçã e soma pontos. Começaremos o código exibindo o corpo e movendo-o para a camada de trás, de modo que a cabeça da cobrinha permaneça sempre visível à frente.

O corpo da cobrinha deve acompanhar constantemente a movimentação da cabeça, e para simular o crescimento, vamos criar clones do corpo em intervalos de 0,01 segundos. Esses clones irão formar a “cauda” da cobrinha, dando a impressão de que ela está crescendo.

Para garantir que o tamanho do corpo seja proporcional à quantidade de pontos obtidos, cada clone será temporário. Quando um clone começar, ele esperará por um intervalo de tempo definido pela fórmula Pontos/5 segundos antes de ser apagado. Isso faz com que a cauda da cobrinha se ajuste dinamicamente ao desempenho do jogador, aumentando o desafio conforme o jogo avança.

Código do ator Corpinho.
Figura 8 – Código do ator Corpinho.

3 – Programar o cenário:

A programação do cenário do jogo é simples, mas essencial para uma transição suave entre o início do jogo e o fim. Quando a bandeira verde for clicada, o cenário 1 deve ser exibido, indicando o início do jogo. Isso pode ser configurado usando o bloco “mude para o cenário” associado ao cenário 1.

Quando o jogo terminar, ao receber a mensagem “Game Over”, o cenário 2 deve ser exibido, sinalizando que o jogo acabou. Para isso, utilizamos novamente o bloco “mude para o cenário”, agora para o cenário 2, seguido de um bloco para tocar o som Lose para reforçar o fim do jogo.

Figura 9 - Código do cenário.
Figura 9 – Código do cenário.

Caso prefira, você pode baixar o código completo do jogo clicando aqui.

Espero ter ajudado,

Obrigada a todos e, em caso de dúvidas, deixe seu comentário abaixo!

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.