Innholdsfortegnelse:

Arduino Touch Tic Tac Toe -spill: 6 trinn (med bilder)
Arduino Touch Tic Tac Toe -spill: 6 trinn (med bilder)

Video: Arduino Touch Tic Tac Toe -spill: 6 trinn (med bilder)

Video: Arduino Touch Tic Tac Toe -spill: 6 trinn (med bilder)
Video: DIY Tic-Tac-Toe Game using Arduino #shorts 2024, November
Anonim
Image
Image
Arduino Touch Tic Tac Toe -spill
Arduino Touch Tic Tac Toe -spill
Arduino Touch Tic Tac Toe -spill
Arduino Touch Tic Tac Toe -spill
Arduino Touch Tic Tac Toe -spill
Arduino Touch Tic Tac Toe -spill

Kjære venner, velkommen til en annen Arduino -opplæring! I denne detaljerte opplæringen skal vi bygge et Arduino Tic Tac Toe -spill. Som du kan se, bruker vi en berøringsskjerm, og vi spiller mot datamaskinen. Et enkelt spill som Tic Tac Toe er en flott introduksjon til spillprogrammering og kunstig intelligens. Selv om vi ikke kommer til å bruke kunstige intelligensalgoritmer i dette spillet, vil vi forstå hvorfor det kreves kunstig intelligensalgoritmer i mer komplekse spill.

Å utvikle spill for Arduino er ikke lett og krever mye tid. Men vi kan bygge noen enkle spill for Arduino fordi det er morsomt, og det vil tillate oss å utforske noen mer avanserte programmeringsemner, som kunstig intelligens. Det er en flott læringsopplevelse, og på slutten vil du ha et fint spill for barna!

La oss nå bygge dette prosjektet.

Trinn 1: Få alle delene

Image
Image
2.8
2.8

Delene som trengs for å bygge dette prosjektet er følgende:

En Arduino Uno ▶

En 2,8”berøringsskjerm ▶

Kostnaden for prosjektet er veldig lav. Det er bare 15 $

Før du prøver å bygge dette prosjektet, vennligst se videoen jeg har forberedt om berøringsskjermen. Jeg har vedlagt det i denne instruksen. Det vil hjelpe deg å forstå koden og kalibrere berøringsskjermen.

Trinn 2: 2,8 "berøringsfargeskjerm for Arduino

Image
Image
2.8
2.8
2.8
2.8

Jeg oppdaget denne berøringsskjermen på banggood.com og bestemte meg for å kjøpe den for å prøve å bruke den i noen av prosjektene mine. Som du kan se er skjermen billig, den koster rundt $ 11.

Få den her ▶

Skjermen tilbyr en oppløsning på 320x240 piksler, og den kommer som et skjold som gjør forbindelsen til Arduino ekstremt enkel. Som du kan se, bruker skjermen nesten alle de digitale og analoge pinnene på Arduino Uno. Når vi bruker dette skjoldet, sitter vi igjen med bare 2 digitale pins og 1 analog pin for prosjektene våre. Heldigvis fungerer displayet fint med Arduino Mega også, så når vi trenger flere pins kan vi bruke Arduino Mega i stedet for Arduino Uno. Dessverre fungerer ikke denne skjermen med Arduino Due eller Wemos D1 ESP8266 -kortet. En annen fordel med skjoldet er at det tilbyr et micro SD -spor som er veldig enkelt å bruke.

Trinn 3: Bygg prosjektet og test det

Bygg prosjektet og test det
Bygg prosjektet og test det
Bygg prosjektet og test det
Bygg prosjektet og test det
Bygg prosjektet og test det
Bygg prosjektet og test det

Etter å ha koblet skjermen til Arduino Uno, kan vi laste inn koden og vi er klare til å spille.

Først trykker vi på "Start spillet" -knappen og spillet starter. Arduino spiller først. Vi kan deretter spille vårt trekk ved å berøre skjermen. Arduino spiller deretter sitt trekk og så videre. Spilleren som lykkes med å plassere tre av merkene sine i en horisontal, vertikal eller diagonal rad vinner spillet. Når spillet er over, vises Game Over -skjermen. Vi kan deretter trykke på spill igjen -knappen for å starte spillet igjen.

Arduino er veldig god i dette spillet. Det vil vinne de fleste kampene, eller hvis du er en veldig god spiller, vil spillet ende uavgjort. Jeg har med vilje designet denne algoritmen for å gjøre noen feil for å gi den menneskelige spilleren en sjanse til å vinne. Ved å legge til to linjer til i spillkoden, kan vi gjøre Arduino umulig å tape spillet. Men hvordan kan en 2 $ -brikke, Arduino -CPU, slå menneskehjernen? Er programmet vi utviklet smartere enn menneskehjernen?

Trinn 4: Spillalgoritmen

Spillalgoritmen
Spillalgoritmen
Spillalgoritmen
Spillalgoritmen

For å svare på dette spørsmålet, la oss se på algoritmen jeg har implementert.

Datamaskinen spiller alltid først. Denne avgjørelsen alene gjør spillet mye lettere for Arduino å vinne. Det første trekket er alltid et hjørne. Det andre trekket for Arduino er også et tilfeldig hjørne fra de gjenværende uten å bry seg om spillerbevegelsen i det hele tatt. Fra dette tidspunktet sjekker Arduino først om spilleren kan vinne i neste trekk og blokkerer det trekket. Hvis spilleren ikke kan vinne i et enkelt trekk, spiller det et hjørneslag hvis det er tilgjengelig eller tilfeldig fra det gjenværende. Det er det, denne enkle algoritmen kan slå den menneskelige spilleren hver gang eller i verste fall vil spillet resultere i uavgjort. Dette er ikke den beste tic tac toe -spillalgoritmen, men en av de enkleste.

Denne algoritmen kan enkelt implementeres i Arduino, fordi Tic Tac Toe -spillet er veldig enkelt, og vi kan enkelt analysere det og løse det. Hvis vi designer spilletreet kan vi oppdage noen vinnende strategier og enkelt implementere dem i kode, eller vi kan la CPU -en beregne spilletreet i sanntid og velge det beste trekket selv. Selvfølgelig er algoritmen vi bruker i dette spillet veldig enkel, fordi spillet er veldig enkelt. Hvis vi prøver å designe en vinnende algoritme for sjakk, selv om vi bruker den raskeste datamaskinen, kan vi ikke beregne spilletreet på tusen år! For spill som dette trenger vi en annen tilnærming, vi trenger noen kunstige intelligens -algoritmer og selvfølgelig enorm prosessorkraft. Mer om dette i en fremtidig video.

Trinn 5: Kode for prosjektet

Kode for prosjektet
Kode for prosjektet

La oss ta en rask titt på koden til prosjektet. Vi trenger tre biblioteker for at koden skal kunne kompileres.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Berøringsskjerm:

Som du kan se, krever selv et enkelt spill som dette mer enn 600 kodelinjer. Koden er kompleks, så jeg vil ikke prøve å forklare den i en kort opplæring. Jeg vil vise deg implementeringen av algoritmen for Arduino -trekkene.

Først spiller vi to tilfeldige hjørner.

<int firstMoves = {0, 2, 6, 8}; // vil bruke disse posisjonene først for (teller = 0; teller <4; teller ++) // Telle første trekk spilt {if (tavle [førsteMoves [teller]! = 0) // Første trekk spilles av noen {movesPlayed ++; }} gjør {if (moves <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; hvis (brett [c] == 0) {forsinkelse (1000); brett [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Deretter sjekker vi i hver runde om spilleren kan vinne i neste trekk.

int checkOpponent ()

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

Hvis ja, blokkerer vi det trekket, de fleste ganger. Vi blokkerer ikke alle trekkene for å gi den menneskelige spilleren en sjanse til å vinne. Kan du finne hvilke trekk som ikke er blokkert? Etter å ha blokkert flyttingen, spiller vi et gjenværende hjørne, eller et tilfeldig trekk. Du kan studere koden og implementere din egen uslåelige algoritme enkelt. Som alltid kan du finne koden til prosjektet vedlagt på denne instruksjonsboken.

MERK: Siden Banggood tilbyr samme skjerm med to forskjellige skjermdrivere, hvis koden ovenfor ikke fungerer, må du endre initDisplay -funksjonen til følgende:

ugyldig initDisplay ()

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

Trinn 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 uslåelig algoritme for enkle spill. Dette prosjektet er flott, fordi det er enkelt å bygge, og samtidig en flott introduksjon til kunstig intelligens og spillprogrammering. Jeg vil prøve å bygge noen mer avanserte prosjekter med kunstig intelligens i fremtiden ved å bruke den kraftigere Raspberry Pi, så følg med! Jeg vil gjerne høre din mening om dette prosjektet.

Vennligst legg inn kommentarene dine nedenfor, og ikke glem å like instruksjonene hvis du synes det er interessant. Takk!

Anbefalt: