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.
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.
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.
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.
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.
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.
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) 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.
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.
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.