Innholdsfortegnelse:
- Trinn 1: Få alle delene
- Trinn 2: 2,8 "berøringsfargeskjerm for Arduino
- Trinn 3: Bygg prosjektet og test det
- Trinn 4: Spillalgoritmen
- Trinn 5: Kode for prosjektet
- Trinn 6: Endelige tanker og forbedringer
Video: Arduino Touch Tic Tac Toe -spill: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
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
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
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
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
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
La oss ta en rask titt på koden til prosjektet. Vi trenger tre biblioteker for at koden skal kunne kompileres.
- Adafruit TFTLCD:
- Adafruit GFX:
- 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
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:
Tic Tac Toe: 12 trinn
Tic Tac Toe: I dag lager vi et Tic Tac Toe -spill på TinkerCad ved hjelp av Arduino. Vi kommer til å bruke mange enkle komponenter og bruke koden til å knytte dem alle sammen. Hoveddelen av denne kretsen som bringer alt sammen er koden. Denne prog
Tic Tac Toe (3 på rad): 10 trinn (med bilder)
Tic Tac Toe (3 på rad): Dette prosjektet er en elektronisk gjenskapning av den klassiske Tic-Tac-Toe blyanten & papir 2 spiller spill. Hjertet i kretsen er Microchips PIC 16F627A mikrokontroller. Jeg har inkludert nedlastingskobling for et PC -kort PDF og også HEX -koden for
Tic Tac Toe på Arduino Med AI (Minimax -algoritme): 3 trinn
Tic Tac Toe på Arduino Med AI (Minimax Algoritme): I denne instruksen skal jeg vise deg hvordan du bygger et Tic Tac Toe -spill med AI ved hjelp av en Arduino. Du kan enten spille mot Arduino eller se Arduino spille mot seg selv. Jeg bruker en algoritme kalt "minimax algoritme"
Tic Tac Toe i Visual Basic: 3 trinn (med bilder)
Tic Tac Toe i Visual Basic: Tic Tac Toe er et av de mest populære tidspassspillene. Spesielt i klasserom;). I denne instruksen skal vi designe dette spillet på vår PC ved hjelp av den populære GUI -programmeringsplattformen, visual basic
Arduino og Touchpad Tic Tac Toe: 8 trinn (med bilder)
Arduino og Touchpad Tic Tac Toe: Eller en øvelse i inngangs- og utgangsmultipleksering og arbeid med biter. Og et bidrag til Arduino -konkurransen. Dette er en implementering av et tic tac toe -spill ved hjelp av et 3x3 utvalg av tofargede lysdioder for en skjerm, en enkel resistiv berøringsplate