Taula de continguts:
- Pas 1: Obteniu totes les parts
- Pas 2: pantalla tàctil de 2,8 "en color per a Arduino
- Pas 3: Construir el projecte i provar-lo
- Pas 4: l'algorisme del joc
- Pas 5: Codi del projecte
- Pas 6: Pensaments finals i millores
Vídeo: Joc Arduino Touch Tic Tac Toe: 6 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Benvolguts amics, benvinguts a un altre tutorial Arduino. En aquest detallat tutorial anem a construir un joc Arduino Tic Tac Toe. Com podeu veure, fem servir una pantalla tàctil i estem jugant contra l’ordinador. Un joc senzill com Tic Tac Toe és una gran introducció a la programació de jocs i a la Intel·ligència Artificial. Tot i que no farem servir cap algorisme d’intel·ligència artificial en aquest joc, entendrem per què es requereixen algorismes d’intel·ligència artificial en jocs més complexos.
Desenvolupar jocs per a Arduino no és fàcil i requereix molt de temps. Però podem construir alguns jocs senzills per a Arduino perquè és divertit i ens permetrà explorar temes de programació més avançats, com la intel·ligència artificial. És una gran experiència d’aprenentatge i al final tindreu un bon joc per als nens!
Ara construïm aquest projecte.
Pas 1: Obteniu totes les parts
Les parts necessàries per construir aquest projecte són les següents:
An Arduino Uno ▶
Una pantalla tàctil de 2,8”▶
El cost del projecte és molt baix. Només val 15 $
Abans d'intentar construir aquest projecte, mireu el vídeo que he preparat sobre la pantalla tàctil. L’he adjuntat en aquest instructiu. Us ajudarà a entendre el codi i a calibrar la pantalla tàctil.
Pas 2: pantalla tàctil de 2,8 "en color per a Arduino
Vaig descobrir aquesta pantalla tàctil a banggood.com i vaig decidir comprar-la per intentar utilitzar-la en alguns dels meus projectes. Com podeu veure, la pantalla és econòmica i costa uns 11 dòlars.
Obteniu-lo aquí ▶
La pantalla ofereix una resolució de 320x240 píxels i es presenta com un escut que facilita molt la connexió amb Arduino. Com podeu veure, la pantalla utilitza gairebé tots els pins digitals i analògics de l’Arduino Uno. En utilitzar aquest escut, només ens queden 2 pins digitals i 1 pin analògic per als nostres projectes. Afortunadament, la pantalla també funciona bé amb l’Arduino Mega, de manera que quan necessitem més pins podem utilitzar l’Arduino Mega en lloc de l’Arduino Uno. Malauradament, aquesta pantalla no funciona amb Arduino Due ni amb la placa Wemos D1 ESP8266. Un altre avantatge de l'escut és que ofereix una ranura micro SD que és molt fàcil d'utilitzar.
Pas 3: Construir el projecte i provar-lo
Després de connectar la pantalla a l'Arduino Uno, podem carregar el codi i estem preparats per jugar.
Al principi, premem el botó "Inicia el joc" i el joc comença. L’Arduino toca primer. A continuació, podem jugar a la nostra jugada simplement tocant la pantalla. A continuació, l’Arduino juga el seu moviment, etc. Guanya el joc el jugador que aconsegueixi col·locar tres de les seves marques en una fila horitzontal, vertical o diagonal. Quan finalitza el joc, apareix la pantalla Game Over. A continuació, podem prémer el botó Reprodueix per començar de nou el joc.
L'Arduino és molt bo en aquest joc. Guanyarà la majoria dels jocs, o si sou un jugador molt bo, el joc acabarà en empat. Vaig dissenyar intencionadament aquest algorisme per cometre alguns errors per tal de donar al jugador humà la possibilitat de guanyar. Si afegim dues línies més al codi del joc, podem fer que l’Arduino no pugui perdre el joc. Però, com pot un xip de 2 $, la CPU Arduino, superar el cervell humà? El programa que hem desenvolupat és més intel·ligent que el cervell humà?
Pas 4: l'algorisme del joc
Per respondre a aquesta pregunta, vegem l’algoritme que he implementat.
L’ordinador sempre juga primer. Només amb aquesta decisió, l'Arduino guanya el joc molt més fàcilment. El primer moviment sempre és un racó. El segon moviment de l'Arduino també és una cantonada aleatòria de la resta sense preocupar-se del moviment del jugador. A partir d’aquest moment, l’Arduino comprova primer si el jugador pot guanyar en el següent moviment i bloqueja aquest moviment. Si el jugador no pot guanyar en una sola jugada, juga una jugada de cantonada si està disponible o una aleatòria de la resta. Ja està, aquest senzill algorisme pot guanyar al jugador humà cada vegada o, en el pitjor dels casos, el joc resultarà en un empat. Aquest no és el millor algorisme de joc de tic tac toe, sinó un dels més senzills.
Aquest algorisme es pot implementar fàcilment a Arduino, perquè el joc Tic Tac Toe és molt senzill i el podem analitzar i resoldre fàcilment. Si dissenyem l'arbre del joc, podem descobrir algunes estratègies guanyadores i implementar-les fàcilment en codi o podem deixar que la CPU calculi l'arbre del joc en temps real i escollir el millor moviment per si mateix. Per descomptat, l’algorisme que fem servir en aquest joc és molt senzill, perquè el joc és molt senzill. Si intentem dissenyar un algorisme guanyador per als escacs, fins i tot si fem servir l’ordinador més ràpid, no podem calcular l’arbre de joc en mil anys. Per a jocs com aquest, necessitem un altre enfocament, necessitem alguns algorismes d’Intel·ligència Artificial i, per descomptat, un enorme poder de processament. Més informació sobre això en un futur vídeo.
Pas 5: Codi del projecte
Fem una ullada ràpida al codi del projecte. Necessitem tres biblioteques per tal de compilar el codi.
- Adafruit TFTLCD:
- Adafruit GFX:
- Pantalla tàctil:
Com podeu veure, fins i tot un joc tan senzill com aquest requereix més de 600 línies de codi. El codi és complex, de manera que no intentaré explicar-ho en un breu tutorial. Us mostraré la implementació de l'algorisme per als moviments d'Arduino.
Al principi, juguem dos córners a l’atzar.
<int firstMoves = {0, 2, 6, 8}; // utilitzarà aquestes posicions primer per (comptador = 0; comptador <4; comptador ++) // Compteu els primers moviments jugats {if (tauler [primerMou [comptador]! = 0) // El primer moviment el juga algú {movesPlayed ++; }} fer {if (es mou <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (tauler [c] == 0) {delay (1000); tauler [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
A continuació, en cada ronda comprovem si el jugador pot guanyar en la següent jugada.
int checkOpponent ()
{if (tauler [0] == 1 && tauler [1] == 1 && tauler [2] == 0) retorn 2; else if (tauler [0] == 1 && tauler [1] == 0 && tauler [2] == 1) retorna 1; else if (tauler [1] == 1 && tauler [2] == 1 && tauler [0] == 0) retorna 0; else if (tauler [3] == 1 && tauler [4] == 1 && tauler [5] == 0) retorna 5; else if (tauler [4] == 1 && tauler [5] == 1 && tauler [3] == 0) retorna 3; else if (tauler [3] == 1 && tauler [4] == 0 && tauler [5] == 1) retorna 4; else if (tauler [1] == 0 && tauler [4] == 1 && tauler [7] == 1) retorna 1; sinó torna 100; }
Si és així, bloquegem aquest moviment, la majoria de les vegades. No bloquegem tots els moviments per donar al jugador humà la possibilitat de guanyar. Podeu trobar quins moviments no estan bloquejats? Després de bloquejar el moviment, reproduïm una cantonada restant o un moviment aleatori. Podeu estudiar el codi i implementar fàcilment el vostre propi algorisme immillorable. Com sempre, podeu trobar el codi del projecte adjunt en aquest instructiu.
NOTA: Atès que Banggood ofereix la mateixa pantalla amb dos controladors de pantalla diferents, si el codi anterior no funciona, canvieu la funció initDisplay a la següent:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Pas 6: Pensaments finals i millores
Com podeu veure, fins i tot amb un Arduino Uno, podem construir un algorisme immillorable per a jocs senzills. Aquest projecte és fantàstic, ja que és fàcil de construir i, al mateix temps, és una gran introducció a la intel·ligència artificial i la programació de jocs. Intentaré construir alguns projectes més avançats amb Intel·ligència Artificial en el futur amb el Raspberry Pi més potent, així que estigueu atents. M'encantaria escoltar la vostra opinió sobre aquest projecte.
Si us plau, publiqueu els vostres comentaris a continuació i no us oblideu d’agradar els indicatius si us sembla interessant. Gràcies!
Recomanat:
Joc de bricolatge Arduino Tic Toc Toe: 6 passos (amb imatges)
DIY Arduino Tic Toc Toe Joc: el joc Tic Tac Toe és un joc clàssic de dos jugadors. Es fa divertit quan el jugueu amb els vostres fills, familiars i amics. Aquí he mostrat com fer un joc Tic Tac Toe mitjançant un Arduino Uno, botons i LEDs de Pixel. Aquest arduino basat en 4 per 4 Tic Tac Toe
Joc Microbit Tic Tac Toe: 4 passos (amb imatges)
Joc Microbit Tic Tac Toe: per a aquest projecte, el meu company de feina - @descartez i jo vam crear un fantàstic joc de tic tac toe amb la funcionalitat de ràdio dels microbits. Si abans no heu sentit a parlar de microbits, són un microcontrolador fantàstic dissenyat per ensenyar a programar als nens. Ells
Joc 3D4x: Tic-Tac-Toe 3D 4x4x4: 5 passos (amb imatges)
Joc 3D4x: 3D 4x4x4 Tic-Tac-Toe: Estàs cansat de jugar al mateix tic-tac-toe vell, avorrit i bidimensional ?? Doncs tenim la solució per a vosaltres! Tic-tac-toe en 3 dimensions !!! Per a 2 jugadors, en aquest cub de 4x4x4, aconsegueix 4 LED seguits (en qualsevol direcció) i guanyaràs! Tu ho fas. Vostè pla
Com fer un joc de Tic Tac Toe amb Swift amb Xcode: 5 passos
Com fer un joc de Tic Tac Toe amb Swift amb Xcode: en aquest tutorial de Swift us mostraré com crear una aplicació de Tic Tac Toe. Aquesta aplicació és extremadament senzilla i és un gran projecte per a qualsevol principiant. Desglossaré el tutorial en tres passos: 1. Creació dels objectes2. Enllaçar objectes al codi 3. El c
Joc interactiu Tic-Tac Toe controlat amb Arduino: 6 passos
Joc interactiu de Tic-Tac Toe controlat amb Arduino: l’objectiu del projecte Physic Tic-Tac-Toe és traslladar un joc molt conegut a l’àmbit físic. Originalment, el joc el jugaven dos jugadors en un tros de paper, posant els símbols "X" i "O" per torns. La nostra idea era examinar el comportament dels jugadors