Innehållsförteckning:

Arduino Touch Tic Tac Toe -spel: 6 steg (med bilder)
Arduino Touch Tic Tac Toe -spel: 6 steg (med bilder)

Video: Arduino Touch Tic Tac Toe -spel: 6 steg (med bilder)

Video: Arduino Touch Tic Tac Toe -spel: 6 steg (med bilder)
Video: DIY Tic-Tac-Toe Game using Arduino #shorts 2024, Juni
Anonim
Image
Image
Arduino Touch Tic Tac Toe -spel
Arduino Touch Tic Tac Toe -spel
Arduino Touch Tic Tac Toe -spel
Arduino Touch Tic Tac Toe -spel
Arduino Touch Tic Tac Toe -spel
Arduino Touch Tic Tac Toe -spel

Kära vänner välkomna till en annan Arduino -handledning! I denna detaljerade handledning ska vi bygga ett Arduino Tic Tac Toe -spel. Som du ser använder vi en pekskärm och vi spelar mot datorn. Ett enkelt spel som Tic Tac Toe är en bra introduktion till spelprogrammering och artificiell intelligens. Även om vi inte kommer att använda någon artificiell intelligensalgoritm i det här spelet, kommer vi att förstå varför artificiell intelligensalgoritmer krävs i mer komplexa spel.

Att utveckla spel för Arduino är inte lätt och kräver mycket tid. Men vi kan bygga några enkla spel för Arduino eftersom det är roligt och det gör att vi kan utforska några mer avancerade programmeringsämnen, som artificiell intelligens. Det är en stor inlärningsupplevelse och i slutet kommer du att ha ett trevligt spel för barnen!

Låt oss nu bygga detta projekt.

Steg 1: Skaffa alla delar

Image
Image
2.8
2.8

De delar som behövs för att bygga detta projekt är följande:

En Arduino Uno ▶

En 2,8”pekskärm ▶

Kostnaden för projektet är mycket låg. Det är bara 15 $

Innan du försöker bygga detta projekt, se den video jag har förberett om pekskärmen. Jag har bifogat det i denna instruerbara. Det hjälper dig att förstå koden och kalibrera pekskärmen.

Steg 2: 2,8 "pekfärgskärm för Arduino

Image
Image
2.8
2.8
2.8
2.8

Jag upptäckte den här pekskärmen på banggood.com och bestämde mig för att köpa den för att försöka använda den i några av mina projekt. Som du kan se är skärmen billig, den kostar cirka $ 11.

Hämta det här ▶

Displayen erbjuder en upplösning på 320x240 pixlar och den kommer som en skärm som gör anslutningen till Arduino extremt lätt. Som du kan se använder displayen nästan alla digitala och analoga stift på Arduino Uno. När vi använder denna sköld har vi bara 2 digitala stift och en analog stift för våra projekt. Lyckligtvis fungerar skärmen bra med Arduino Mega också, så när vi behöver fler stift kan vi använda Arduino Mega istället för Arduino Uno. Tyvärr fungerar den här skärmen inte med Arduino Due eller Wemos D1 ESP8266 -kortet. En annan fördel med skölden är att den erbjuder en micro SD -kortplats som är mycket enkel att använda.

Steg 3: Bygga projektet och testa det

Bygga projektet och testa det
Bygga projektet och testa det
Bygga projektet och testa det
Bygga projektet och testa det
Bygga projektet och testa det
Bygga projektet och testa det

Efter att ha anslutit skärmen till Arduino Uno kan vi ladda koden och vi är redo att spela.

Först trycker vi på knappen "Starta spel" och spelet startar. Arduino spelar först. Vi kan sedan spela vårt drag genom att bara trycka på skärmen. Arduino spelar sedan sitt drag och så vidare. Spelaren som lyckas placera tre av sina märken i en horisontell, vertikal eller diagonal rad vinner spelet. När spelet är över visas Game Over -skärmen. Vi kan sedan trycka på play -knappen igen för att starta spelet igen.

Arduino är mycket bra i det här spelet. Det kommer att vinna de flesta spelen, eller om du är en mycket bra spelare kommer spelet att sluta oavgjort. Jag har avsiktligt utformat denna algoritm för att göra några misstag för att ge den mänskliga spelaren en chans att vinna. Genom att lägga till ytterligare två rader i spelkoden kan vi göra Arduino omöjligt att förlora spelet. Men hur kan ett 2 $ -chip, Arduino -CPU, slå den mänskliga hjärnan? Är programmet vi utvecklade smartare än den mänskliga hjärnan?

Steg 4: Spelalgoritmen

Spelalgoritmen
Spelalgoritmen
Spelalgoritmen
Spelalgoritmen

För att svara på denna fråga, låt oss titta på algoritmen som jag har implementerat.

Datorn spelar alltid först. Bara detta beslut gör spelet mycket lättare för Arduino att vinna. Det första steget är alltid ett hörn. Det andra draget för Arduino är också ett slumpmässigt hörn från de återstående utan att bry sig om spelarrörelsen alls. Från och med nu kontrollerar Arduino först om spelaren kan vinna i nästa drag och blockerar det. Om spelaren inte kan vinna i ett enda drag, spelar den ett hörnmoment om det är tillgängligt eller slumpmässigt från de återstående. Det är det, den här enkla algoritmen kan slå den mänskliga spelaren varje gång eller i värsta fall kommer spelet att leda till oavgjort. Detta är inte den bästa tic tac toe -spelalgoritmen, men en av de enklaste.

Denna algoritm kan enkelt implementeras i Arduino, eftersom Tic Tac Toe -spelet är väldigt enkelt, och vi kan enkelt analysera det och lösa det. Om vi designar spelträdet kan vi upptäcka några vinnande strategier och enkelt implementera dem i kod eller så kan vi låta CPU: n beräkna spelträdet i realtid och välja det bästa draget själv. Naturligtvis är algoritmen vi använder i det här spelet väldigt enkel, eftersom spelet är väldigt enkelt. Om vi försöker utforma en vinnande algoritm för schack, även om vi använder den snabbaste datorn kan vi inte beräkna spelträdet på tusen år! För spel som detta behöver vi ett annat tillvägagångssätt, vi behöver några artificiella intelligensalgoritmer och naturligtvis enorm processorkraft. Mer om detta i en framtida video.

Steg 5: Kod för projektet

Kod för projektet
Kod för projektet

Låt oss ta en snabb titt på projektets kod. Vi behöver tre bibliotek för att koden ska kunna kompileras.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Pekskärm:

Som du kan se, till och med ett enkelt spel som detta, kräver mer än 600 rader kod. Koden är komplex, så jag kommer inte att försöka förklara det i kort handledning. Jag kommer dock att visa dig implementeringen av algoritmen för Arduino -rörelserna.

Till en början spelar vi två slumpmässiga hörnor.

<int firstMoves = {0, 2, 6, 8}; // kommer att använda dessa positioner först för (räknare = 0; räknare <4; räknare ++) // Räkna första drag som spelas {om (bräde [förstaMovingar [räknare]! = 0) // Första drag spelas av någon {movesPlayed ++; }} gör {if (flyttar <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (board [c] == 0) {delay (1000); bräda [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Därefter kontrollerar vi i varje omgång om spelaren kan vinna i nästa drag.

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; annars om (board [0] == 1 && board [1] == 0 && board [2] == 1) returnerar 1; annars om (board [1] == 1 && board [2] == 1 && board [0] == 0) returnerar 0; annars om (board [3] == 1 && board [4] == 1 && board [5] == 0) returnerar 5; annars om (board [4] == 1 && board [5] == 1 && board [3] == 0) returnerar 3; annars om (board [3] == 1 && board [4] == 0 && board [5] == 1) returnerar 4; annars om (board [1] == 0 && board [4] == 1 && board [7] == 1) returnerar 1; annars returnera 100; }

Om ja, blockerar vi den flytten, oftast. Vi blockerar inte alla drag för att ge den mänskliga spelaren en chans att vinna. Kan du hitta vilka drag som inte är blockerade? Efter att ha blockerat flytten spelar vi ett kvarvarande hörn eller ett slumpmässigt drag. Du kan studera koden och implementera din egen oslagbara algoritm enkelt. Som alltid kan du hitta koden för projektet bifogad på denna instruerbara.

OBS: Eftersom Banggood erbjuder samma skärm med två olika bildskärmsdrivrutiner, om koden ovan inte fungerar, ändra initDisplay -funktionen till följande:

void initDisplay ()

{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }

Steg 6: Slutliga tankar och förbättringar

Slutliga tankar och förbättringar
Slutliga tankar och förbättringar

Som du kan se, även med en Arduino Uno, kan vi bygga en oslagbar algoritm för enkla spel. Detta projekt är bra, eftersom det är enkelt att bygga, och samtidigt en bra introduktion till artificiell intelligens och spelprogrammering. Jag kommer att försöka bygga några mer avancerade projekt med artificiell intelligens i framtiden med hjälp av den mer kraftfulla Raspberry Pi så håll utkik! Jag vill gärna höra din åsikt om detta projekt.

Skriv dina kommentarer nedan och glöm inte att gilla instruktionen om du tycker att det är intressant. Tack!

Rekommenderad: