Sadržaj:
- Korak 1: Nabavite sve dijelove
- Korak 2: 2,8 -inčni zaslon u boji osjetljiv na dodir za Arduino
- Korak 3: Izgradnja projekta i njegovo testiranje
- Korak 4: Algoritam igre
- Korak 5: Kod projekta
- Korak 6: Završna razmišljanja i poboljšanja
Video: Arduino Touch Tic Tac Toe igra: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
Dragi prijatelji, dobrodošli u još jedan Arduino vodič! U ovom detaljnom vodiču napravit ćemo igru Arduino Tic Tac Toe. Kao što vidite, koristimo zaslon osjetljiv na dodir i igramo se protiv računala. Jednostavna igra poput Tic Tac Toe je izvrstan uvod u programiranje igara i umjetnu inteligenciju. Iako u ovoj igri nećemo koristiti nikakve algoritme umjetne inteligencije, razumjet ćemo zašto su algoritmi umjetne inteligencije potrebni u složenijim igrama.
Razvoj igara za Arduino nije jednostavan i zahtijeva puno vremena. No, možemo stvoriti neke jednostavne igre za Arduino jer je zabavno i omogućit će nam da istražimo neke naprednije programske teme, poput umjetne inteligencije. To je sjajno iskustvo učenja i na kraju ćete imati lijepu igru za djecu!
Izgradimo sada ovaj projekt.
Korak 1: Nabavite sve dijelove
Dijelovi potrebni za izgradnju ovog projekta su sljedeći:
Arduino Uno ▶
Zaslon osjetljiv na dodir od 2,8 inča ▶
Cijena projekta je vrlo niska. To je samo 15 dolara
Prije nego što pokušate izgraditi ovaj projekt, pogledajte video koji sam pripremio o zaslonu osjetljivom na dodir. Priložio sam ga u ovu uputu. Pomoći će vam razumjeti kôd i kalibrirati zaslon osjetljiv na dodir.
Korak 2: 2,8 -inčni zaslon u boji osjetljiv na dodir za Arduino
Otkrio sam ovaj zaslon osjetljiv na dodir na banggood.com i odlučio sam ga kupiti kako bih ga pokušao koristiti u nekim svojim projektima. Kao što vidite, zaslon je jeftin, košta oko 11 USD.
Preuzmite ga ovdje ▶
Zaslon nudi rezoluciju 320x240 piksela i dolazi kao štit koji povezivanje s Arduinom čini iznimno lakim. Kao što vidite, zaslon koristi gotovo sve digitalne i analogne pinove Arduino Uno. Kad koristimo ovaj štit, ostaju nam samo 2 digitalna pina i 1 analogni pin za naše projekte. Srećom, zaslon radi dobro i s Arduino Megom, pa kada nam zatreba više pinova možemo koristiti Arduino Mega umjesto Arduino Uno. Nažalost, ovaj zaslon ne radi s Arduino Due ili Wemos D1 ESP8266 pločom. Još jedna prednost štita je to što nudi utor za mikro SD koji je vrlo jednostavan za korištenje.
Korak 3: Izgradnja projekta i njegovo testiranje
Nakon povezivanja zaslona s Arduino Uno, možemo učitati kôd i spremni smo za igru.
Najprije pritisnemo gumb "Pokreni igru" i igra počinje. Arduino svira prvi. Tada možemo odigrati svoj potez jednostavnim dodirom zaslona. Arduino tada igra svoj potez i tako dalje. Igrač koji uspije postaviti tri svoje oznake u vodoravni, okomiti ili dijagonalni red pobjeđuje u igri. Kad igra završi, pojavit će se zaslon Game Over. Zatim možemo ponovno pritisnuti tipku za reprodukciju za ponovno pokretanje igre.
Arduino je jako dobar u ovoj igri. Pobijedit će u većini utakmica, ili ako ste jako dobar igrač igra će završiti neriješeno. Namjerno sam osmislio ovaj algoritam da napravi neke greške kako bi čovjeku dao priliku za pobjedu. Dodavanjem još dva retka kodu igre, možemo onemogućiti Arduino da izgubi igru. No, kako čip od 2 USD, Arduino CPU, može pobijediti ljudski mozak? Je li program koji smo razvili pametniji od ljudskog mozga?
Korak 4: Algoritam igre
Da bismo odgovorili na ovo pitanje, pogledajmo algoritam koji sam implementirao.
Računalo uvijek igra prvo. Sama ova odluka Arduinu znatno olakšava pobjedu u igri. Prvi potez je uvijek korner. Drugi potez za Arduino također je nasumični kutak od preostalih, a da uopće ne brinete o potezu igrača. Od ovog trenutka, Arduino prvo provjerava može li igrač pobijediti u sljedećem potezu i blokira taj potez. Ako igrač ne može pobijediti u jednom potezu, pušta kutni potez ako je dostupan ili nasumičan iz preostalih. To je to, ovaj jednostavan algoritam može pobijediti ljudskog igrača svaki put ili će u najgorem slučaju igra rezultirati neriješeno. Ovo nije najbolji algoritam igre tic tac toe, ali jedan od najjednostavnijih.
Ovaj se algoritam može lako implementirati u Arduino, jer je igra Tic Tac Toe vrlo jednostavna, a mi je možemo lako analizirati i riješiti. Ako dizajniramo stablo igara, možemo otkriti neke pobjedničke strategije i lako ih implementirati u kôd ili možemo dopustiti CPU -u da izračuna stablo igre u stvarnom vremenu i sam odabere najbolji potez. Naravno, algoritam koji koristimo u ovoj igri vrlo je jednostavan, jer je igra vrlo jednostavna. Pokušamo li osmisliti pobjednički algoritam za šah, čak i ako koristimo najbrže računalo, ne možemo izračunati stablo igre u tisuću godina! Za ovakve igre potreban nam je drugi pristup, potrebni su nam algoritmi umjetne inteligencije i naravno ogromna procesorska snaga. Više o tome u budućem videu.
Korak 5: Kod projekta
Pogledajmo nakratko kôd projekta. Za sastavljanje koda potrebne su nam tri knjižnice.
- Adafruit TFTLCD:
- Adafruit GFX:
- Zaslon osjetljiv na dodir:
Kao što vidite, čak i jednostavna igra poput ove zahtijeva više od 600 redaka koda. Kôd je složen pa ga neću pokušati objasniti u kratkom vodiču. Ipak ću vam pokazati implementaciju algoritma za Arduino poteze.
U početku igramo dva slučajna kornera.
<int firstMoves = {0, 2, 6, 8}; // prvo će koristiti ove pozicije za (brojač = 0; brojač <4; brojač ++) // Brojati prve odigrane poteze {if (ploča [firstMoves [counter]! = 0) // Prvi potez igra netko {potezPlayed ++; }} učiniti {if (pomiče se <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (ploča [c] == 0) {kašnjenje (1000); ploča [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Zatim u svakoj rundi provjeravamo može li igrač pobijediti u sljedećem potezu.
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; else vrati 100; }
Ako da, blokiramo taj potez, najčešće. Ne blokiramo sve poteze kako bismo ljudskom igraču dali priliku za pobjedu. Možete li pronaći koji potezi nisu blokirani? Nakon blokiranja poteza, sviramo preostali korner ili nasumični potez. Možete proučiti kôd i lako implementirati vlastiti nepobjedivi algoritam. Kao i uvijek, kôd projekta možete pronaći u prilogu ove upute.
NAPOMENA: Budući da Banggood nudi isti zaslon s dva različita upravljačka programa, ako gornji kôd ne radi, promijenite funkciju initDisplay na sljedeće:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Korak 6: Završna razmišljanja i poboljšanja
Kao što vidite, čak i s Arduino Uno možemo izgraditi nepobjediv algoritam za jednostavne igre. Ovaj je projekt izvrstan jer ga je lako izgraditi, a ujedno i odličan uvod u umjetnu inteligenciju i programiranje igara. Pokušat ću u budućnosti izgraditi neke naprednije projekte s umjetnom inteligencijom koristeći snažniji Raspberry Pi pa ostanite s nama! Volio bih čuti vaše mišljenje o ovom projektu.
Molimo vas da svoje komentare objavite ispod i ne zaboravite lajkati upute ako vam budu zanimljive. Hvala!
Preporučeni:
Python Tic Tac Toe igra: 4 koraka
Python Tic Tac Toe igra: python tic tac toe igra Ova igra je napravljena u pythonu koji je računalni jeziki koristio sam uređivač pythona pod nazivom: pycharm možete koristiti i normalni uređivač python koda
Elektronička igra Tic-Tac-Toe u drvenoj kutiji: 5 koraka
Elektronička igra Tic-Tac-Toe u drvenoj kutiji: Pozdrav Uvodim smiješnu igru Tic-Tac-Toe u novom izdanju. Pretražio sam sličan projekt na webu, ali ideja je ovdje jedinstvena.NADAM SE :) Pa krenimo sada
Igra Microbit Tic Tac Toe: 4 koraka (sa slikama)
Igra Microbit Tic Tac Toe: Za ovaj projekt, moj suradnik - @descartez i ja stvorili smo sjajnu igru s karticama pomoću radio funkcije mikrobita. Ako prije niste čuli za mikrobite, oni su sjajan mikrokontroler dizajniran za poučavanje djece programiranju. Oni
3D4x igra: 3D 4x4x4 Tic-Tac-Toe: 5 koraka (sa slikama)
3D4x igra: 3D 4x4x4 Tic-Tac-Toe: Jeste li umorni od igranja na istim, starim, dosadnim, 2-dimenzionalnim tic-tac-toe ?? Pa imamo rješenje za vas! Tic-tac-toe u 3 dimenzije !!! Za 2 igrača, u ovoj kocki 4x4x4, nabavite 4 LED diode zaredom (u bilo kojem smjeru) i pobjeđujete! Ti to napravi. Ti pla
Interaktivna igra Tic-Tac Toe igra s Arduinom: 6 koraka
Interaktivna igra Tic-Tac Toe nogom kontrolirana s Arduinom: Cilj projekta Physical Tic-Tac-Toe je premjestiti dobro poznatu igru u fizičko područje. Izvorno, igru igraju dva igrača na komadu papira - stavljajući simbole "X" i "O" naizmjence. Naša ideja je bila ispitati ponašanje igrača