Indholdsfortegnelse:

Arduino Touch Tic Tac Toe -spil: 6 trin (med billeder)
Arduino Touch Tic Tac Toe -spil: 6 trin (med billeder)

Video: Arduino Touch Tic Tac Toe -spil: 6 trin (med billeder)

Video: Arduino Touch Tic Tac Toe -spil: 6 trin (med billeder)
Video: Джордж Хотц | Программирование | tinygrad: запуск Apple Neural Engine из C++ | Яблоко М1 | Часть 6 2024, Juni
Anonim
Image
Image
Arduino Touch Tic Tac Toe -spil
Arduino Touch Tic Tac Toe -spil
Arduino Touch Tic Tac Toe -spil
Arduino Touch Tic Tac Toe -spil
Arduino Touch Tic Tac Toe -spil
Arduino Touch Tic Tac Toe -spil

Kære venner velkommen til en anden Arduino -tutorial! I denne detaljerede vejledning skal vi bygge et Arduino Tic Tac Toe -spil. Som du kan se, bruger vi en berøringsskærm, og vi spiller mod computeren. Et simpelt spil som Tic Tac Toe er en god introduktion til spilprogrammering og kunstig intelligens. Selvom vi ikke vil bruge nogen kunstig intelligensalgoritmer i dette spil, forstår vi, hvorfor der kræves kunstig intelligensalgoritmer i mere komplekse spil.

At udvikle spil til Arduino er ikke let og kræver meget tid. Men vi kan bygge nogle enkle spil til Arduino, fordi det er sjovt, og det vil give os mulighed for at udforske nogle mere avancerede programmeringsemner, som kunstig intelligens. Det er en fantastisk læringsoplevelse, og i slutningen vil du have et godt spil til børnene!

Lad os nu bygge dette projekt.

Trin 1: Få alle delene

Image
Image
Den 2.8
Den 2.8

De dele, der er nødvendige for at bygge dette projekt, er følgende:

En Arduino Uno ▶

En 2,8”berøringsskærm ▶

Omkostningerne ved projektet er meget lave. Det er kun 15 $

Inden du forsøger at bygge dette projekt, skal du se den video, jeg har forberedt om berøringsskærmen. Jeg har vedhæftet det i denne instruktive. Det hjælper dig med at forstå koden og kalibrere berøringsskærmen.

Trin 2: 2,8 "Touch -farvedisplay til Arduino

Image
Image
Den 2.8
Den 2.8
Den 2.8
Den 2.8

Jeg opdagede denne berøringsskærm på banggood.com og besluttede at købe den for at prøve at bruge den i nogle af mine projekter. Som du kan se, er displayet billigt, det koster omkring $ 11.

Få det her ▶

Skærmen tilbyder en opløsning på 320x240 pixels, og den kommer som et skjold, der gør forbindelsen til Arduino ekstremt let. Som du kan se, bruger displayet næsten alle de digitale og analoge ben på Arduino Uno. Når vi bruger dette skjold, står vi tilbage med kun 2 digitale ben og 1 analog pin til vores projekter. Heldigvis fungerer displayet også fint med Arduino Mega, så vi kan bruge Arduino Mega i stedet for Arduino Uno, når vi har brug for flere pins. Desværre fungerer denne skærm ikke med Arduino Due eller Wemos D1 ESP8266 -kortet. En anden fordel ved skjoldet er, at det tilbyder en micro SD -slot, som er meget let at bruge.

Trin 3: Bygger projektet og tester det

Bygger projektet og tester det
Bygger projektet og tester det
Bygger projektet og tester det
Bygger projektet og tester det
Bygger projektet og tester det
Bygger projektet og tester det

Efter at have tilsluttet skærmen til Arduino Uno, kan vi indlæse koden, og vi er klar til at spille.

Først trykker vi på knappen "Start spil", og spillet starter. Arduino spiller først. Vi kan derefter spille vores træk ved blot at røre ved skærmen. Arduinoen spiller derefter sit træk og så videre. Spilleren, der lykkes med at placere tre af deres mærker i en vandret, lodret eller diagonal række vinder spillet. Når spillet er slut, vises skærmen Game Over. Vi kan derefter trykke på knappen play igen for at starte spillet igen.

Arduino er meget god til dette spil. Det vil vinde de fleste kampe, eller hvis du er en meget god spiller, ender spillet uafgjort. Jeg har med vilje designet denne algoritme til at lave nogle fejl for at give den menneskelige spiller en chance for at vinde. Ved at tilføje yderligere to linjer til spillets kode kan vi gøre Arduino umuligt at tabe spillet. Men hvordan kan en 2 $ chip, Arduino CPU, slå den menneskelige hjerne? Er det program, vi udviklede, smartere end den menneskelige hjerne?

Trin 4: Spilalgoritmen

Spilalgoritmen
Spilalgoritmen
Spilalgoritmen
Spilalgoritmen

For at besvare dette spørgsmål, lad os se på den algoritme, jeg har implementeret.

Computeren spiller altid først. Denne beslutning alene gør spillet meget lettere for Arduino at vinde. Det første træk er altid et hjørne. Det andet træk for Arduino er også et tilfældigt hjørne fra de resterende uden overhovedet at bekymre sig om spillerens træk. Fra dette tidspunkt kontrollerer Arduino først, om spilleren kan vinde i det næste træk og blokerer det træk. Hvis spilleren ikke kan vinde i et enkelt træk, spiller det et hjørneskift, hvis det er tilgængeligt eller et tilfældigt træk fra de resterende. Det er det, denne enkle algoritme kan slå den menneskelige spiller hver gang eller i værste fald vil spillet resultere i uafgjort. Dette er ikke den bedste tic tac toe -spilalgoritme, men en af de enkleste.

Denne algoritme kan let implementeres i Arduino, fordi Tic Tac Toe -spillet er meget enkelt, og vi kan let analysere det og løse det. Hvis vi designer spiltræet, kan vi opdage nogle vindende strategier og nemt implementere dem i kode, eller vi kan lade CPU'en beregne spiltræet i realtid og vælge det bedste træk af sig selv. Den algoritme, vi bruger i dette spil, er selvfølgelig meget enkel, fordi spillet er meget enkelt. Hvis vi forsøger at designe en vindende algoritme til skak, selvom vi bruger den hurtigste computer, kan vi ikke beregne spiltræet i tusind år! Til spil som dette har vi brug for en anden tilgang, vi har brug for nogle kunstige intelligens -algoritmer og naturligvis enorm processorkraft. Mere om dette i en fremtidig video.

Trin 5: Kode for projektet

Projektets kode
Projektets kode

Lad os tage et hurtigt kig på projektets kode. Vi har brug for tre biblioteker for at koden kan kompilere.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Berøringsskærm:

Som du kan se, kræver selv et simpelt spil som dette mere end 600 linjer kode. Koden er kompleks, så jeg vil ikke forsøge at forklare det i en kort vejledning. Jeg vil dog vise dig implementeringen af algoritmen til Arduino -bevægelserne.

Først spiller vi to tilfældige hjørner.

<int firstMoves = {0, 2, 6, 8}; // vil først bruge disse positioner til (tæller = 0; tæller <4; tæller ++) // Tæl de første træk, der spilles {hvis (bræt [førsteMoves [tæller]! = 0) // Første træk spilles af nogen {movesPlayed ++; }} gør {if (moves <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; hvis (board [c] == 0) {forsinkelse (1000); tavle [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Dernæst kontrollerer vi i hver runde, om spilleren kan vinde i det næste træk.

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) returner 2; ellers hvis (board [0] == 1 && board [1] == 0 && board [2] == 1) returnerer 1; ellers hvis (board [1] == 1 && board [2] == 1 && board [0] == 0) returner 0; ellers hvis (board [3] == 1 && board [4] == 1 && board [5] == 0) returnerer 5; ellers hvis (board [4] == 1 && board [5] == 1 && board [3] == 0) returnerer 3; ellers hvis (board [3] == 1 && board [4] == 0 && board [5] == 1) returnerer 4; ellers hvis (board [1] == 0 && board [4] == 1 && board [7] == 1) returnerer 1; ellers returnere 100; }

Hvis ja, blokerer vi det træk, de fleste gange. Vi blokerer ikke alle træk for at give den menneskelige spiller en chance for at vinde. Kan du finde, hvilke træk der ikke er blokeret? Efter at have blokeret flytningen spiller vi et resterende hjørne eller et tilfældigt træk. Du kan studere koden og implementere din egen uovervindelige algoritme let. Som altid kan du finde projektets kode vedhæftet denne instruktionsbog.

BEMÆRK: Da Banggood tilbyder den samme skærm med to forskellige skærmdrivere, hvis ovenstående kode ikke virker, skal du ændre initDisplay -funktionen til følgende:

ugyldig initDisplay ()

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

Trin 6: Endelige tanker og forbedringer

Endelige tanker og forbedringer
Endelige tanker og forbedringer

Som du kan se, selv med en Arduino Uno, kan vi bygge en uovertruffen algoritme til enkle spil. Dette projekt er fantastisk, fordi det er let at bygge, og samtidig en god introduktion til kunstig intelligens og spilprogrammering. Jeg vil prøve at bygge nogle mere avancerede projekter med kunstig intelligens i fremtiden ved hjælp af den mere kraftfulde Raspberry Pi, så følg med! Jeg vil meget gerne høre din mening om dette projekt.

Send venligst dine kommentarer herunder, og glem ikke at lide den instruktive, hvis du synes er interessant. Tak!

Anbefalede: