Aprender a escrever código pode ser uma longa jornada. Você não apenas precisa encontrar recursos para ajudá-lo a aprender, mas também precisa encontrar ideias de projetos interessantes que mantenham sua educação nos trilhos.

Os videogames oferecem uma ótima oportunidade de programar algo que você possa desfrutar. E eles também podem ensinar os fundamentos que você precisa para ser um bom programador. Este artigo explora um projeto de videogame Arduino portátil DIY para você começar.

O que estamos fazendo e por quê?

Antes de mergulhar na parte guia deste artigo, faz sentido explorar o que estamos fazendo e por que o escolhemos para este projeto. Vários desafios vêm com a criação de jogos para dispositivos como Arduinos.

  • Espaço de armazenamento: a maioria placas Arduino vêm com muito pouca memória RAM ou flash. Isso não apenas limita a quantidade de código que eles podem executar, mas também apresenta desafios quando se trata de trabalhar com variáveis.
  • Poder de Processamento: O Arduino que usamos tem uma CPU de baixo consumo, então é impossível criar aplicativos que consomem muitos recursos para ele.
  • Componentes limitados: Arduinos têm muitos pinos disponíveis, mas muitos componentes precisam de mais de um. Isso nos limita quando se trata de controles e saídas de exibição.

Com esses desafios em mente, decidimos criar um dispositivo portátil que executa um jogo muito simples baseado em reações. Você pode facilmente criar outros jogos para o hardware com o qual estamos trabalhando e encorajamos você a ser criativo.

O jogo em si é muito simples. Três blocos aparecem na tela, dois contornados e um preenchido, cada um com um botão físico correspondente abaixo. O jogador tem que pressionar o botão certo a cada rodada para continuar jogando, e se pressionar o botão errado ou ficar sem tempo, o jogo acaba. Cada pressionamento de botão bem-sucedido concede pontos. O jogo aumenta lentamente sua dificuldade reduzindo o tempo de reação disponível.

Fiação do display OLED, Arduino e botões

A fiação do seu jogo portátil é o primeiro passo neste processo. Como você pode ver no diagrama de circuito acima, você não precisa fazer muitas conexões para começar e pode até usar uma placa de ensaio para este projeto.

Já publicamos um guia para ajudá-lo a botões de pressão de fio para um Arduino. Nosso Projeto de monitor de aquário Arduino mostra como usar um display OLED com um microcontrolador como este. Como tal, vamos nos concentrar no código para este projeto para o resto deste artigo.

Código de jogo portátil Arduino

A formatação adequada e as estruturas de arquivos organizadas são muito importantes para programadores novatos e veteranos. Você vai agradecer a si mesmo por ter tempo para organizar seu código ordenadamente se você tiver que voltar por ele.

O código usa um arquivo INO principal para formar a base do nosso projeto. Há também um arquivo C++ para controlar nossa exibição, um arquivo C++ para executar o código principal do jogo e um arquivo de biblioteca Arduino para conectar tudo.

Vamos nos aprofundar nesse código abaixo, mas recomendamos que você dê uma olhada no código comentado em nosso Projeto de jogo portátil Arduino no GitHub. Isso ajudará você a consultá-lo ao lado deste artigo.

O arquivo de biblioteca (library.h)

Nosso arquivo de biblioteca desempenha um papel crucial, conectando nossos outros arquivos de projeto para que possam funcionar como um único aplicativo. Este arquivo contém declarações para incluir a biblioteca Arduino.h e todas as funções dentro do nosso código de jogo que precisam funcionar entre nossos arquivos. Sem isso, nosso código simplesmente não funcionaria.

O arquivo INO principal (main.ino)

Como muitos projetos do Arduino, este começou com o modelo padrão fornecido pelo Arduino IDE. Esse modelo dá configuração e ciclo funções que usamos para chamar funções em nossos outros arquivos. Este arquivo também possui uma declaração para incluir o arquivo library.h.

A função de configuração é ideal para inicializar nossa tela e botões, pois ela é executada apenas uma vez quando o Arduino é reiniciado ou ligado. Para isso, chamamos a função disSetup() em nosso arquivo de exibição e a função butSetup() em nosso arquivo de jogo.

Nossa função loop() é ainda mais simples que a função setup(), com apenas uma única chamada para a função gameState() encontrada em nosso arquivo de jogo. Vamos explorar isso com mais detalhes mais adiante no artigo.

O arquivo de código de exibição (display.cpp)

Estamos usando uma tela OLED SSD1306 para este projeto, embora você possa usar um tipo diferente de tela se editar o código de acordo. Este arquivo começa com a inclusão do arquivo de biblioteca, biblioteca.h. Em seguida, inclui declarações para as bibliotecas SPI, Wire, Adafruit_GX e Adafruit_SSD1306. Em seguida, ele define algumas constantes para fornecer configurações para a exibição.

A primeira função, disSetup, inicializa a tela e mostra uma tela inicial de logotipo. Em seguida, ele limpa a tela após esperar aproximadamente 2 segundos. Nosso arquivo principal, main.ino, chama disSetup em seu configuração função.

O resto das funções neste arquivo, exceto timerBar(), formam as diferentes telas vistas ao longo do jogo. O arquivo do jogo, jogo.cpp, chama cada uma dessas funções.

  • startGame(): Esta função controla a primeira tela que o jogador vê. Ele simplesmente pergunta se eles estão prontos ao ligar para o switchInstance função encontrada no arquivo do jogo.
  • startGame(): Uma vez que o jogador inicia o jogo, esta tela mostra uma pequena contagem regressiva. Em seguida, altera o estado do jogo para corresponder.
  • inGame(): Esta é a mais complexa de nossas funções de exibição, usando três variáveis ​​para carregar cada rodada do jogo. Ele começa com uma instrução if que determina qual das três peças deve ser preenchida, seguida pela exibição das peças e do nível e pontuação do jogador.
  • timerBar(): Esta função usa uma variável para exibir uma barra de timer na parte inferior da tela. Ele mostra ao jogador quanto tempo ele tem para cada rodada.
  • successScreen(): Esta é uma função simples que exibe uma mensagem cada vez que o jogador completa uma rodada com sucesso.
  • endGame(): Esta função final exibe uma tela de game over com a pontuação do jogador e a opção de iniciar o jogo novamente.

O arquivo de código do jogo (game.cpp)

Finalmente, como último arquivo a ser explorado, é hora de analisar o código do jogo. Este arquivo, como os demais, começa com a inclusão do arquivo library.h. Ele também contém uma longa lista de diferentes variáveis ​​inteiras que usamos durante o jogo.

Você encontrará a função butSetup() antes de qualquer outra coisa. A função setup() em nosso arquivo principal chama butSetup. Esta função usa variáveis ​​para configurar nossos botões como entradas que podemos ler mais tarde.

  • switchInstance(): Esta função alterna entre instâncias do jogo, da tela inicial para as telas de jogo e game over. Ele recebe uma variável para informar para qual estado do jogo mudar. Uma instrução if espera que um botão seja pressionado para iniciar o jogo a partir do estado startGame(). Outra instrução if inicia o jogo novamente a partir do estado endGame().
  • gameState(): Esta função define a dificuldade do jogo com base na pontuação do jogador e chama a função correta dependendo do estado do jogo. Ele começa com uma série de instruções if que definem variáveis ​​com base na pontuação do jogador, seguidas por mais instruções if para verificar a instância atual.
  • tileSelector(): Esta função gera um número aleatório entre 0 e 2 que informa ao jogo qual das três peças deve ser preenchida em um determinado momento.
  • theGame(): Esta função é sem dúvida a mais importante de todas. Ele chama o tileSelector e no jogo funções, escolhendo um novo bloco e exibindo-o na tela. Depois disso, você encontrará um loop for que atua como um cronômetro para cada rodada. Ele contém um conjunto de instruções if que captam os pressionamentos de botão e determinam se eles estão corretos.

Construindo seu próprio jogo Arduino portátil

Este artigo é um complemento do código do projeto encontrado no GitHub. Você pode encontrar mais informações sobre as linhas de código específicas que usamos nos comentários desses arquivos. Mas você também pode simplesmente carregá-lo em seu Arduino e aproveitar a diversão.

A criatividade é fundamental no mundo do desenvolvimento de jogos, e nós encorajamos você a trabalhar em suas próprias ideias de jogos junto com esta.

Os 10 melhores projetos de rádio Arduino

Leia a seguir

CompartilharTweetCompartilharE-mail

Tópicos relacionados

  • Programação
  • faça você mesmo
  • Idéias de projetos DIY
  • Tutoriais de projetos de bricolage
  • Arduino
  • Programação

Sobre o autor

Samuel L. Garbett (41 artigos publicados)

Samuel é um escritor de tecnologia baseado no Reino Unido com uma paixão por todas as coisas de bricolage. Tendo iniciado negócios nas áreas de desenvolvimento web e impressão 3D, além de trabalhar como escritor por muitos anos, Samuel oferece uma visão única do mundo da tecnologia. Concentrando-se principalmente em projetos de tecnologia DIY, ele adora compartilhar ideias divertidas e emocionantes que você pode experimentar em casa. Fora do trabalho, Samuel geralmente pode ser encontrado andando de bicicleta, jogando videogame para PC ou tentando desesperadamente se comunicar com seu caranguejo de estimação.

Mais de Samuel L. Garbett

Assine a nossa newsletter

Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!

Clique aqui para assinar