Tartalomjegyzék:

Arduino Touch Tic Tac Toe játék: 6 lépés (képekkel)
Arduino Touch Tic Tac Toe játék: 6 lépés (képekkel)

Videó: Arduino Touch Tic Tac Toe játék: 6 lépés (képekkel)

Videó: Arduino Touch Tic Tac Toe játék: 6 lépés (képekkel)
Videó: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Június
Anonim
Image
Image
Arduino Touch Tic Tac Toe játék
Arduino Touch Tic Tac Toe játék
Arduino Touch Tic Tac Toe játék
Arduino Touch Tic Tac Toe játék
Arduino Touch Tic Tac Toe játék
Arduino Touch Tic Tac Toe játék

Kedves barátaink, üdvözöljük egy újabb Arduino oktatóanyagban! Ebben a részletes bemutatóban egy Arduino Tic Tac Toe játékot fogunk felépíteni. Mint látható, érintőképernyőt használunk, és a számítógép ellen játszunk. Egy egyszerű játék, mint a Tic Tac Toe, remek bevezetés a játékprogramozásba és a mesterséges intelligenciába. Annak ellenére, hogy ebben a játékban nem fogunk mesterséges intelligencia algoritmusokat használni, megértjük, miért van szükség mesterséges intelligencia algoritmusokra az összetettebb játékoknál.

A játékok fejlesztése az Arduino számára nem könnyű, és sok időt igényel. De építhetünk néhány egyszerű játékot az Arduino számára, mert szórakoztató, és lehetővé teszi számunkra, hogy felfedezzünk néhány fejlettebb programozási témát, például a mesterséges intelligenciát. Ez egy nagyszerű tanulási élmény, és a végén lesz egy jó játék a gyerekeknek!

Most építsük fel ezt a projektet.

1. lépés: Szerezze be az összes alkatrészt

Image
Image
A 2.8
A 2.8

A projekt építéséhez szükséges alkatrészek a következők:

Egy Arduino Uno ▶

2,8 hüvelykes érintőképernyő ▶

A projekt költsége nagyon alacsony. Csak 15 dollár

Mielőtt megpróbálná megépíteni ezt a projektet, nézze meg az érintőképernyőről készített videót. Csatoltam ehhez az oktatóanyaghoz. Segít megérteni a kódot és kalibrálni az érintőképernyőt.

2. lépés: A 2,8 hüvelykes érintőképernyős kijelző az Arduino számára

Image
Image
A 2.8
A 2.8
A 2.8
A 2.8

Ezt az érintőképernyőt a banggood.com webhelyen fedeztem fel, és úgy döntöttem, hogy megvásárolom, hogy megpróbáljam használni néhány projektemben. Mint látható, a kijelző olcsó, körülbelül 11 dollárba kerül.

Szerezd meg itt ▶

A kijelző 320x240 képpontos felbontást kínál, és pajzsként érkezik, ami rendkívül megkönnyíti az Arduino -val való kapcsolatot. Mint látható, a kijelző az Arduino Uno szinte összes digitális és analóg érintkezőjét használja. Ennek az árnyékolásnak a használatakor csak 2 db digitális és 1 db analóg csap marad a projektjeinkhez. Szerencsére a kijelző jól működik az Arduino Mega esetében is, így amikor több tűre van szükségünk, használhatjuk az Arduino Mega -t az Arduino Uno helyett. Sajnos ez a kijelző nem működik az Arduino Due vagy a Wemos D1 ESP8266 táblával. A pajzs másik előnye, hogy nagyon könnyen használható micro SD foglalatot kínál.

3. lépés: A projekt felépítése és tesztelése

A projekt felépítése és tesztelése
A projekt felépítése és tesztelése
A projekt felépítése és tesztelése
A projekt felépítése és tesztelése
A projekt felépítése és tesztelése
A projekt felépítése és tesztelése

Miután csatlakoztatta a képernyőt az Arduino Uno -hoz, betölthetjük a kódot, és készen állunk a játékra.

Először megnyomjuk a „Játék indítása” gombot, és a játék elindul. Először az Arduino játszik. Ezt követően egyszerűen játszhatjuk a lépést a képernyő megérintésével. Ezután az Arduino eljátssza a lépését és így tovább. Az a játékos nyeri a játékot, akinek sikerül három jelét vízszintes, függőleges vagy átlós sorba helyeznie. A játék befejeztével megjelenik a Game Over képernyő. Ezután megnyomhatjuk a lejátszás újbóli gombot a játék újraindításához.

Az Arduino nagyon jó ebben a játékban. A legtöbb játékot megnyeri, vagy ha nagyon jó játékos vagy, a játék döntetlennel zárul. Szándékosan úgy terveztem ezt az algoritmust, hogy néhány hibát elkövetjen annak érdekében, hogy az emberi játékosnak esélye legyen a győzelemre. Ha további két sort ad hozzá a játék kódjához, lehetetlenné tehetjük az Arduino elvesztését. De hogyan tud egy 2 dolláros chip, az Arduino CPU legyőzni az emberi agyat? Okosabb -e az általunk kifejlesztett program, mint az emberi agy?

4. lépés: A játék algoritmusa

A játék algoritmusa
A játék algoritmusa
A játék algoritmusa
A játék algoritmusa

A kérdés megválaszolásához nézzük az általam megvalósított algoritmust.

A számítógép mindig először játszik le. Ez a döntés önmagában sokkal könnyebbé teszi a játékot az Arduino számára. Az első lépés mindig sarok. Az Arduino második lépése szintén véletlenszerű szöglet a megmaradthoz képest anélkül, hogy törődne a játékos lépéseivel. Ettől kezdve az Arduino először ellenőrzi, hogy a játékos nyerhet -e a következő lépésben, és blokkolja ezt a lépést. Ha a játékos egyetlen mozdulattal sem tud nyerni, akkor sarokmozdulatot játszik, ha rendelkezésre áll, vagy véletlenszerűt a maradékból. Ennyi, ez az egyszerű algoritmus minden alkalommal legyőzheti az emberi játékost, vagy a legrosszabb esetben a játék döntetlennel jár. Ez nem a legjobb tic tac toe játék algoritmus, de az egyik legegyszerűbb.

Ez az algoritmus könnyen megvalósítható az Arduino -ban, mert a Tic Tac Toe játék nagyon egyszerű, és könnyen elemezhetjük és megoldhatjuk. Ha megtervezzük a játékfát, felfedezhetünk néhány nyerő stratégiát, és könnyen megvalósíthatjuk őket kódban, vagy hagyhatjuk, hogy a CPU valós időben kiszámítsa a játékfát, és önmagában válassza ki a legjobb lépést. Természetesen az algoritmus, amelyet ebben a játékban használunk, nagyon egyszerű, mert a játék nagyon egyszerű. Ha megpróbálunk nyerő algoritmust tervezni a sakkhoz, akkor is, ha a leggyorsabb számítógépet használjuk, ezer év alatt nem tudjuk kiszámítani a játékfát! Az ilyen játékokhoz más megközelítésre van szükségünk, szükségünk van néhány mesterséges intelligencia algoritmusra és természetesen hatalmas feldolgozási teljesítményre. Erről bővebben egy későbbi videóban.

5. lépés: A projekt kódja

A projekt kódja
A projekt kódja

Nézzük gyorsan a projekt kódját. Három könyvtárra van szükségünk a kód fordításához.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Érintőképernyő:

Mint látható, még egy ilyen egyszerű játékhoz is több mint 600 sornyi kódra van szükség. A kód bonyolult, ezért nem próbálom megmagyarázni egy rövid bemutatóban. Mutatom azonban az algoritmus megvalósítását az Arduino mozdulatokhoz.

Először két véletlenszerű szögletet játszunk.

<int firstMoves = {0, 2, 6, 8}; // először ezeket a pozíciókat használja (számláló = 0; számláló <4; számláló ++) // Az első lejátszott mozdulatok számolása {if (board [firstMoves [számláló]!! = 0) // Az első lépést valaki játssza {movePlayed ++; }} do {if (mozog <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (tábla [c] == 0) {delay (1000); tábla [c] = 2; Serial.print (firstMoves [randomMove]); Sorozat.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Ezután minden körben ellenőrizzük, hogy a játékos nyerhet -e a következő lépésben.

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; egyébként if (tábla [3] == 1 && tábla [4] == 1 && tábla [5] == 0) visszatér 5; else if (tábla [4] == 1 && tábla [5] == 1 && tábla [3] == 0) visszatér 3; egyébként if (tábla [3] == 1 && tábla [4] == 0 && tábla [5] == 1) visszatér 4; else if (board [1] == 0 && board [4] == 1 && board [7] == 1) return 1; egyébként vissza 100; }

Ha igen, akkor ezt a lépést legtöbbször blokkoljuk. Nem blokkolunk minden lépést annak érdekében, hogy az emberi játékosnak esélye legyen a győzelemre. Megtalálja, hogy mely mozdulatok nincsenek blokkolva? A lépés blokkolása után egy hátralévő szögletet vagy egy véletlenszerű lépést játszunk. Tanulmányozhatja a kódot, és könnyen megvalósíthatja saját verhetetlen algoritmusát. Mint mindig, ezen az oktatóanyagon találja a projekt kódját.

MEGJEGYZÉS: Mivel a Banggood ugyanazt a kijelzőt kínálja két különböző megjelenítő illesztőprogrammal, ha a fenti kód nem működik, módosítsa az initDisplay funkciót a következőre:

void initDisplay ()

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

6. lépés: Végső gondolatok és fejlesztések

Végső gondolatok és fejlesztések
Végső gondolatok és fejlesztések

Mint látható, még egy Arduino Uno -val is verhetetlen algoritmust tudunk felépíteni az egyszerű játékokhoz. Ez a projekt nagyszerű, mert könnyen felépíthető, ugyanakkor nagyszerű bevezetés a mesterséges intelligenciába és a játékprogramozásba. A jövőben megpróbálok néhány fejlettebb projektet építeni mesterséges intelligenciával az erősebb Raspberry Pi segítségével, így maradjon velünk! Szeretném hallani a véleményét erről a projektről.

Kérjük, tegye meg észrevételeit az alábbiakban, és ne felejtse el tetszeni az utasításokat, ha érdekesnek találja. Kösz!

Ajánlott: