Índice:
- Etapa 1: Obtenha todas as peças
- Etapa 2: Visor colorido de toque de 2,8 "para Arduino
- Etapa 3: Construindo o projeto e testando-o
- Etapa 4: o algoritmo do jogo
- Etapa 5: Código do Projeto
- Etapa 6: considerações finais e melhorias
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Caros amigos, bem-vindos a outro tutorial do Arduino! Neste tutorial detalhado, vamos construir um jogo Arduino Tic Tac Toe. Como você pode ver, estamos usando uma tela sensível ao toque e jogando contra o computador. Um jogo simples como o Tic Tac Toe é uma ótima introdução à programação de jogos e à Inteligência Artificial. Mesmo que não usemos nenhum algoritmo de inteligência artificial neste jogo, entenderemos por que os algoritmos de inteligência artificial são necessários em jogos mais complexos.
Desenvolver jogos para o Arduino não é fácil e requer muito tempo. Mas podemos construir alguns jogos simples para o Arduino porque é divertido e nos permite explorar alguns tópicos de programação mais avançados, como Inteligência artificial. É um ótimo aprendizado e no final você terá um bom jogo para as crianças!
Vamos agora construir este projeto.
Etapa 1: Obtenha todas as peças
As peças necessárias para construir este projeto são as seguintes:
Um Arduino Uno ▶
Uma tela de toque de 2,8”▶
O custo do projeto é muito baixo. Custa apenas 15 $
Antes de tentar construir este projeto, assista ao vídeo que preparei sobre a tela de toque. Anexei a este instrutível. Isso o ajudará a entender o código e calibrar a tela de toque.
Etapa 2: Visor colorido de toque de 2,8 "para Arduino
Descobri essa tela sensível ao toque no banggood.com e decidi comprá-la para tentar usá-la em alguns de meus projetos. Como você pode ver, a tela é barata, custa cerca de US $ 11.
Baixe aqui ▶
A tela oferece resolução de 320x240 pixels e vem como um escudo que torna a conexão com o Arduino extremamente fácil. Como você pode ver, a tela usa quase todos os pinos digitais e analógicos do Arduino Uno. Ao usar esta blindagem, ficamos com apenas 2 pinos digitais e 1 pino analógico para nossos projetos. Felizmente, a tela também funciona bem com o Arduino Mega, então, quando precisarmos de mais pinos, podemos usar o Arduino Mega em vez do Arduino Uno. Infelizmente este display não funciona com o Arduino Due ou a placa Wemos D1 ESP8266. Outra vantagem do escudo é que ele oferece um slot micro SD que é muito fácil de usar.
Etapa 3: Construindo o projeto e testando-o
Após conectar a tela ao Arduino Uno, podemos carregar o código e estamos prontos para jogar.
Primeiramente, pressionamos o botão “Start Game” e o jogo é iniciado. O Arduino joga primeiro. Podemos então fazer nosso movimento simplesmente tocando a tela. O Arduino então executa seu movimento e assim por diante. O jogador que conseguir colocar três de suas marcas em uma linha horizontal, vertical ou diagonal, ganha o jogo. Quando o jogo termina, a tela Game Over aparece. Podemos então pressionar o botão play again para iniciar o jogo novamente.
O Arduino é muito bom nesse jogo. Ele vai ganhar a maioria dos jogos, ou se você for um jogador muito bom, o jogo terminará empatado. Eu intencionalmente projetei este algoritmo para cometer alguns erros a fim de dar ao jogador humano uma chance de vencer. Adicionando mais duas linhas ao código do jogo, podemos tornar o Arduino impossível de perder o jogo. Mas como um chip de 2 $, a CPU do Arduino, pode vencer o cérebro humano? O programa que desenvolvemos é mais inteligente do que o cérebro humano?
Etapa 4: o algoritmo do jogo
Para responder a essa pergunta, vamos dar uma olhada no algoritmo que implementei.
O computador sempre joga primeiro. Essa decisão por si só torna o jogo muito mais fácil para o Arduino vencer. O primeiro movimento é sempre um canto. O segundo movimento para o Arduino também é um canto aleatório do restante, sem se preocupar com o movimento do jogador. Deste ponto em diante, o Arduino primeiro verifica se o jogador pode ganhar no próximo movimento e bloqueia esse movimento. Se o jogador não conseguir vencer em uma única jogada, ele executa uma jogada de canto se estiver disponível ou uma jogada aleatória das restantes. É isso, este algoritmo simples pode vencer o jogador humano todas as vezes ou na pior das hipóteses o jogo resultará em um empate. Este não é o melhor algoritmo de jogo do jogo da velha, mas um dos mais simples.
Este algoritmo pode ser implementado no Arduino facilmente, porque o jogo Tic Tac Toe é muito simples, e podemos analisá-lo e resolvê-lo facilmente. Se projetarmos a árvore do jogo, podemos descobrir algumas estratégias vencedoras e implementá-las facilmente no código ou podemos deixar a CPU computar a árvore do jogo em tempo real e escolher o melhor movimento por si só. Claro, o algoritmo que usamos neste jogo é muito simples, porque o jogo é muito simples. Se tentarmos projetar um algoritmo vencedor para o xadrez, mesmo se usarmos o computador mais rápido, não poderemos calcular a árvore do jogo em mil anos! Para jogos como este, precisamos de outra abordagem, precisamos de alguns algoritmos de Inteligência Artificial e, claro, um grande poder de processamento. Mais sobre isso em um vídeo futuro.
Etapa 5: Código do Projeto
Vamos dar uma olhada rápida no código do projeto. Precisamos de três bibliotecas para que o código seja compilado.
- Adafruit TFTLCD:
- Adafruit GFX:
- Tela sensível ao toque:
Como você pode ver, mesmo um jogo simples como este requer mais de 600 linhas de código. O código é complexo, então não vou tentar explicá-lo em um breve tutorial. Vou mostrar a você a implementação do algoritmo para os movimentos do Arduino.
No início, jogamos dois cantos aleatórios.
<int firstMoves = {0, 2, 6, 8}; // usará essas posições primeiro para (counter = 0; counter <4; counter ++) // Contar os primeiros lances jogados {if (board [firstMoves [counter]! = 0) // O primeiro movimento é jogado por alguém {movesPlayed ++; }} faça {if (moves <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (placa [c] == 0) {atraso (1000); placa [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
A seguir, em cada rodada verificamos se o jogador consegue vencer na próxima jogada.
int checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; else if (board [0] == 1 && board [1] == 0 && board [2] == 1) return 1; else if (board [1] == 1 && board [2] == 1 && board [0] == 0) return 0; else if (board [3] == 1 && board [4] == 1 && board [5] == 0) return 5; else if (board [4] == 1 && board [5] == 1 && board [3] == 0) return 3; else if (board [3] == 1 && board [4] == 0 && board [5] == 1) return 4; else if (board [1] == 0 && board [4] == 1 && board [7] == 1) return 1; senão retorna 100; }
Se sim, bloqueamos esse movimento, na maioria das vezes. Não bloqueamos todos os movimentos para dar ao jogador humano uma chance de vencer. Você consegue descobrir quais movimentos não estão bloqueados? Depois de bloquear o movimento, jogamos um canto restante, ou um movimento aleatório. Você pode estudar o código e implementar seu próprio algoritmo imbatível facilmente. Como sempre, você pode encontrar o código do projeto anexado neste instrutível.
NOTA: Uma vez que Banggood oferece o mesmo monitor com dois drivers de vídeo diferentes, se o código acima não funcionar, altere a função initDisplay para o seguinte:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Etapa 6: considerações finais e melhorias
Como você pode ver, mesmo com um Arduino Uno, podemos construir um algoritmo imbatível para jogos simples. Este projeto é ótimo, porque é fácil de construir, e ao mesmo tempo uma ótima introdução à Inteligência Artificial e programação de jogos. Vou tentar construir alguns projetos mais avançados com Inteligência Artificial no futuro usando o Raspberry Pi mais poderoso, então fique ligado! Eu adoraria ouvir sua opinião sobre este projeto.
Por favor, poste seus comentários abaixo e não se esqueça de gostar do instrutível se achar interessante. Obrigado!
Recomendado:
Jogo Python Tic Tac Toe: 4 etapas
Jogo Python Tic Tac Toe: jogo python tic tac toe este jogo é feito em python que é uma linguagem de computador eu usei um editor python chamado: pycharm você também pode usar o editor de código python normal também
Jogo Microbit Tic Tac Toe: 4 etapas (com imagens)
Jogo Microbit Tic Tac Toe: Para este projeto, meu colega de trabalho - @descartez e eu criamos um jogo incrível tic tac toe usando a funcionalidade de rádio de microbits. Se você nunca ouviu falar de micróbios antes, eles são um microcontrolador incrível projetado para ensinar programação a crianças. Elas
Jogo 3D4x: 3D 4x4x4 Tic-Tac-Toe: 5 etapas (com imagens)
3D4x Jogo: 3D 4x4x4 Tic-Tac-Toe: Você está cansado de jogar o mesmo, velho, chato e bidimensional tic-tac-toe ?? Bem, nós temos a solução para você! Jogo da velha em 3 dimensões !!! Para 2 jogadores, neste cubo 4x4x4, obtenha 4 LEDs em uma linha (em qualquer direção) e você ganha! Você fez isso. Você pla
Como fazer um jogo Tic Tac Toe usando Swift com Xcode: 5 etapas
Como fazer um jogo Tic Tac Toe usando Swift com Xcode: Neste tutorial do Swift, vou mostrar como criar um aplicativo Tic Tac Toe. Este aplicativo é extremamente simples e é um ótimo projeto para qualquer iniciante. Vou dividir o tutorial em três etapas: 1. Criando os objetos2. Vinculando objetos no code3. O C
Jogo interativo Tic-Tac Toe controlado com Arduino: 6 etapas
Jogo interativo Tic-Tac-Toe controlado com Arduino: O objetivo do projeto Physical Tic-Tac-Toe é mover um jogo conhecido para o reino físico. Originalmente, o jogo é jogado por dois jogadores em um pedaço de papel - colocando os símbolos 'X' e 'O' em turnos. Nossa ideia era examinar o comportamento dos jogadores