Kazalo:
- Korak: Pridobite vse dele
- 2. korak: 2,8 -palčni barvni zaslon na dotik za Arduino
- 3. korak: Zgradite projekt in ga preizkusite
- 4. korak: Algoritem igre
- 5. korak: Koda projekta
- Korak 6: Končne misli in izboljšave
Video: Arduino Touch Tic Tac Toe Igra: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Dragi prijatelji, dobrodošli v drugi vadnici Arduino! V tej podrobni vadnici bomo zgradili igro Arduino Tic Tac Toe. Kot vidite, uporabljamo zaslon na dotik in igramo proti računalniku. Preprosta igra, kot je Tic Tac Toe, je odličen uvod v programiranje iger in umetno inteligenco. Čeprav v tej igri ne bomo uporabljali nobenih algoritmov za umetno inteligenco, bomo razumeli, zakaj so algoritmi za umetno inteligenco potrebni v bolj zapletenih igrah.
Razvoj iger za Arduino ni enostaven in zahteva veliko časa. Lahko pa zgradimo nekaj preprostih iger za Arduino, ker je zabavno in nam bo omogočilo raziskovanje nekaterih naprednejših programskih tem, kot je umetna inteligenca. To je odlična učna izkušnja in na koncu boste imeli lepo igro za otroke!
Zdaj zgradimo ta projekt.
Korak: Pridobite vse dele
Za izdelavo tega projekta so potrebni naslednji deli:
Arduino Uno ▶
2,8 -palčni zaslon na dotik ▶
Stroški projekta so zelo nizki. Stane le 15 $
Preden poskušate zgraditi ta projekt, si oglejte videoposnetek, ki sem ga pripravil o zaslonu na dotik. Priložil sem ga v to navodilo. Pomagal vam bo razumeti kodo in umeriti zaslon na dotik.
2. korak: 2,8 -palčni barvni zaslon na dotik za Arduino
Ta zaslon na dotik sem odkril na banggood.com in se odločil za nakup, da bi ga poskusil uporabiti v nekaterih svojih projektih. Kot lahko vidite, je zaslon poceni in stane okoli 11 USD.
Pridobite ga tukaj ▶
Zaslon ponuja ločljivost 320x240 slikovnih pik in je ščit, zaradi česar je povezava z Arduinom izjemno enostavna. Kot lahko vidite, zaslon uporablja skoraj vse digitalne in analogne zatiče Arduino Uno. Ko uporabljamo ta ščit, imamo za naše projekte le 2 digitalna zatiča in 1 analogni zatič. Na srečo zaslon dobro deluje tudi z Arduino Mega, zato lahko, ko potrebujemo več zatičev, namesto Arduino Uno uporabimo Arduino Mega. Žal ta zaslon ne deluje s ploščo Arduino Due ali Wemos D1 ESP8266. Druga prednost ščita je, da ponuja režo za mikro SD, ki je zelo enostavna za uporabo.
3. korak: Zgradite projekt in ga preizkusite
Po priključitvi zaslona na Arduino Uno lahko naložimo kodo in pripravljeni smo za igro.
Najprej pritisnemo gumb »Začni igro« in igra se začne. Najprej igra Arduino. Svojo potezo lahko nato preprosto odigramo tako, da se dotaknemo zaslona. Arduino nato igra svojo potezo itd. Igralec, ki uspe postaviti tri svoje oznake v vodoravno, navpično ali diagonalno vrsto, zmaga v igri. Ko je igre konec, se prikaže zaslon Game Over. Nato lahko znova pritisnemo gumb za predvajanje, da znova začnemo igro.
Arduino je v tej igri zelo dober. V večini tekem bo zmagal, če pa ste zelo dober igralec, se bo igra končala z neodločenim izidom. Ta algoritem sem namenoma naredil, da naredi nekaj napak, da bi človeškemu igralcu dal priložnost za zmago. Če kodi igre dodamo še dve vrstici, lahko Arduinu onemogočimo izgubo igre. Kako pa lahko 2 -milijonski čip, procesor Arduino, premaga človeške možgane? Je program, ki smo ga razvili, pametnejši od človeških možganov?
4. korak: Algoritem igre
Za odgovor na to vprašanje poglejmo algoritem, ki sem ga uvedel.
Računalnik vedno igra prvi. Že sama ta odločitev Arduinu olajša igro. Prva poteza je vedno kot. Druga poteza za Arduino je tudi naključni kot iz preostalega, ne da bi sploh skrbel za igralčevo potezo. Od tega trenutka naprej Arduino najprej preveri, ali lahko igralec v naslednji potezi zmaga, in blokira to potezo. Če igralec ne more zmagati v eni sami potezi, izvede potezo v kotu, če je na voljo, ali naključno od preostalih. To je to, ta preprost algoritem lahko vsakič premaga človeškega igralca ali pa bo v najslabšem primeru igra povzročila neodločeno. To ni najboljši algoritem igre tic tac toe, ampak eden najpreprostejših.
Ta algoritem je mogoče enostavno implementirati v Arduino, ker je igra Tic Tac Toe zelo preprosta in jo lahko enostavno analiziramo in rešimo. Če oblikujemo drevo iger, lahko odkrijemo nekaj zmagovalnih strategij in jih preprosto implementiramo v kodo, ali pa lahko CPU -ju v realnem času izračunamo drevo iger in sami izberemo najboljšo potezo. Seveda je algoritem, ki ga uporabljamo v tej igri, zelo preprost, saj je igra zelo preprosta. Če poskušamo oblikovati zmagovalni algoritem za šah, tudi če uporabljamo najhitrejši računalnik, drevesa igre ne moremo izračunati v tisoč letih! Za takšne igre potrebujemo drug pristop, potrebujemo nekaj algoritmov umetne inteligence in seveda ogromno procesorsko moč. Več o tem v prihodnjem videu.
5. korak: Koda projekta
Na hitro poglejmo kodo projekta. Za sestavljanje kode potrebujemo tri knjižnice.
- Adafruit TFTLCD:
- Adafruit GFX:
- Zaslon na dotik:
Kot lahko vidite, tudi preprosta igra, kot je ta, zahteva več kot 600 vrstic kode. Koda je zapletena, zato je ne bom poskušal razložiti v kratki vadnici. Pokazal pa vam bom implementacijo algoritma za poteze Arduino.
Sprva igramo dva naključna kota.
<int firstMoves = {0, 2, 6, 8}; // bo te položaje najprej uporabil za (števec = 0; števec <4; števec ++) // Šteje prve odigrane poteze {if (deska [firstMoves [counter]! = 0) // Prvo potezo igra nekdo {potezPlayed ++; }} naredi {if (premakne <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (tabla [c] == 0) {zamuda (1000); deska [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Nato v vsakem krogu preverimo, ali lahko igralec v naslednji potezi zmaga.
int checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; sicer če (tabla [0] == 1 && deska [1] == 0 && deska [2] == 1) vrne 1; else if (board [1] == 1 && board [2] == 1 && board [0] == 0) return 0; sicer 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; drugače vrni 100; }
Če da, to potezo večinoma blokiramo. Ne blokiramo vseh potez, da bi človeškemu igralcu dali priložnost za zmago. Ali lahko ugotovite, kateri premiki niso blokirani? Ko blokiramo potezo, igramo preostali kot ali naključno potezo. Kodo lahko preučite in preprosto uporabite svoj nepremagljiv algoritem. Kot vedno lahko najdete kodo projekta, priloženo temu navodilu.
OPOMBA: Ker Banggood ponuja isti zaslon z dvema različnima gonilnikoma zaslona, če zgornja koda ne deluje, spremenite funkcijo initDisplay na naslednje:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Korak 6: Končne misli in izboljšave
Kot lahko vidite, tudi z Arduino Uno lahko zgradimo neprekosljiv algoritem za preproste igre. Ta projekt je odličen, saj ga je enostavno zgraditi in hkrati odličen uvod v umetno inteligenco in programiranje iger. V prihodnosti bom z umetno inteligenco poskušal zgraditi nekaj naprednejših projektov z uporabo močnejšega Raspberry Pi, zato ostanite z nami! Rad bi slišal vaše mnenje o tem projektu.
Spodaj objavite svoje komentarje in ne pozabite všečkati navodil, če se vam zdi zanimivo. Hvala!
Priporočena:
Igra Python Tic Tac Toe: 4 koraki
Python Tic Tac Toe Game: igra python tic tac toe ta igra je narejena v pythonu, ki je računalniški jezik, uporabil sem urejevalnik python, imenovan: pycharm, lahko uporabite tudi običajen urejevalnik kode python
Elektronska igra Tic-Tac-Toe v leseni škatli: 5 korakov
Elektronska igra Tic-Tac-Toe v leseni škatli: Pozdravljeni Predstavljam smešno igro Tic-Tac-Toe v novi izdaji. Po spletu sem iskal podoben projekt, vendar je ideja tukaj edinstvena. Upam :) Začnimo zdaj
Igra Microbit Tic Tac Toe: 4 koraki (s slikami)
Igra Microcit Tic Tac Toe: Za ta projekt sva s sodelavcem - @descartez ustvarila odlično igro tac tae z uporabo radijske funkcije mikrobitov. Če še niste slišali za mikrobite, so odličen mikrokrmilnik, namenjen učenju otrok programiranja. Oni
3D4x igra: 3D 4x4x4 Tic-Tac-Toe: 5 korakov (s slikami)
3D4x igra: 3D 4x4x4 Tic-Tac-Toe: Ste utrujeni od igranja istih, starih, dolgočasnih, 2-dimenzionalnih kartic-tac-?? No, imamo rešitev za vas! Tic-tac-toe v 3-dimenzijah !!! Za 2 igralca v tej kocki 4x4x4 dobite 4 LED zapored (v katero koli smer) in zmagate! Ti uspe. Ti pla
Interaktivna igra Tic-Tac Toe, nadzorovana z Arduinom: 6 korakov
Interaktivna igra Tic-Tac Toe, nadzorovana z Arduinom: Cilj projekta Physical Tic-Tac-Toe je premikanje znane igre v fizično področje. Prvotno igro igrata dva igralca na listu papirja - tako, da simbola "X" in "O" izmenično postavljata. Naša ideja je bila preučiti vedenje igralcev