INHOUDSOPGAWE:
- Stap 1: Kry al die onderdele
- Stap 2: Die 2,8 "aanraakskerm vir Arduino
- Stap 3: Bou die projek en toets dit
- Stap 4: Die spelalgoritme
- Stap 5: Kode van die projek
- Stap 6: Laaste gedagtes en verbeterings
Video: Arduino Touch Tic Tac Toe -spel: 6 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Geagte vriende, welkom by nog 'n Arduino -tutoriaal! In hierdie gedetailleerde handleiding gaan ons 'n Arduino Tic Tac Toe -speletjie bou. Soos u kan sien, gebruik ons 'n aanraakskerm en speel ons teen die rekenaar. 'N Eenvoudige spel soos Tic Tac Toe is 'n uitstekende inleiding tot spelprogrammering en kunsmatige intelligensie. Alhoewel ons geen kunsmatige intelligensie -algoritmes in hierdie speletjie sal gebruik nie, sal ons verstaan waarom kunsmatige intelligensie -algoritmes nodig is in meer komplekse speletjies.
Die ontwikkeling van speletjies vir Arduino is nie maklik nie en verg baie tyd. Maar ons kan 'n paar eenvoudige speletjies vir Arduino bou, want dit is lekker en dit sal ons toelaat om meer gevorderde programmeeronderwerpe, soos kunsmatige intelligensie, te ondersoek. Dit is 'n wonderlike leerervaring, en aan die einde het u 'n lekker speletjie vir die kinders!
Kom ons bou nou hierdie projek.
Stap 1: Kry al die onderdele
Die onderdele wat nodig is om hierdie projek te bou, is die volgende:
'N Arduino Uno ▶
'N 2.8”raakskerm ▶
Die koste van die projek is baie laag. Dit is slegs 15 $
Kyk eers na die video wat ek voorberei het oor die aanraakskerm voordat u hierdie projek bou. Ek het dit in hierdie instruksies aangeheg. Dit sal u help om die kode te verstaan en die aanraakskerm te kalibreer.
Stap 2: Die 2,8 "aanraakskerm vir Arduino
Ek het hierdie aanraakskerm op banggood.com ontdek en besluit om dit te koop om dit in sommige van my projekte te probeer gebruik. Soos u kan sien, is die skerm goedkoop, dit kos ongeveer $ 11.
Kry dit hier ▶
Die skerm het 'n resolusie van 320x240 pixels en 'n skerm wat die verbinding met Arduino baie maklik maak. Soos u kan sien, gebruik die skerm byna al die digitale en analoog penne van die Arduino Uno. As ons hierdie skild gebruik, het ons slegs 2 digitale penne en 1 analoog pen vir ons projekte. Gelukkig werk die skerm ook goed met die Arduino Mega, dus as ons meer penne nodig het, kan ons die Arduino Mega in plaas van die Arduino Uno gebruik. Ongelukkig werk hierdie skerm nie met die Arduino Due of die Wemos D1 ESP8266 -bord nie. Nog 'n voordeel van die skild is dat dit 'n mikro -SD -gleuf bied wat baie maklik is om te gebruik.
Stap 3: Bou die projek en toets dit
Nadat ons die skerm met die Arduino Uno verbind het, kan ons die kode laai en is ons gereed om te speel.
Eerstens druk ons op die knoppie "Begin spel" en die spel begin. Die Arduino speel eerste. Ons kan dan ons beweging eenvoudig speel deur op die skerm te raak. Die Arduino speel dan sy beweging en so aan. Die speler wat daarin slaag om drie van hul merke in 'n horisontale, vertikale of diagonale ry te plaas, wen die wedstryd. As die spel verby is, verskyn die Game Over -skerm. Ons kan dan op die speelknoppie druk om die spel weer te begin.
Die Arduino is baie goed in hierdie speletjie. Dit sal die meeste wedstryde wen, of as u 'n baie goeie speler is, eindig die wedstryd gelykop. Ek het hierdie algoritme doelbewus ontwerp om 'n paar foute te maak om die menslike speler 'n kans te gee om te wen. Deur nog twee reëls by die spelkode te voeg, kan ons die Arduino onmoontlik maak om die spel te verloor. Maar hoe kan 'n 2 $ -skyfie, die Arduino -SVE, die menslike brein klop? Is die program wat ons ontwikkel het slimmer as die menslike brein?
Stap 4: Die spelalgoritme
Om hierdie vraag te beantwoord, kyk ons na die algoritme wat ek geïmplementeer het.
Die rekenaar speel altyd eerste. Hierdie besluit alleen maak die spel baie makliker vir die Arduino om te wen. Die eerste stap is altyd 'n hoek. Die tweede skuif vir die Arduino is ook 'n ewekansige hoek van die oorblywende sonder om enigsins om te gee oor die skuif van die speler. Vanaf hierdie tydstip kyk die Arduino eers of die speler in die volgende stap kan wen en blokkeer die beweging. As die speler nie in 'n enkele beweging kan wen nie, speel hy 'n hoekskuif as dit beskikbaar is of 'n ewekansige beweging van die oorblywende beweging. Dit is dit, hierdie eenvoudige algoritme kan die menslike speler elke keer klop, of in die ergste geval kan die wedstryd gelykop wees. Dit is nie die beste tic tac toe -spel -algoritme nie, maar een van die eenvoudigste.
Hierdie algoritme kan maklik in Arduino geïmplementeer word, omdat die Tic Tac Toe -spel baie eenvoudig is, en ons dit maklik kan ontleed en oplos. As ons die spelboom ontwerp, kan ons 'n paar wenstrategieë ontdek en dit maklik in kode implementeer, of ons kan die SVE die spelboom in reële tyd laat bereken en self die beste stap kies. Die algoritme wat ons in hierdie speletjie gebruik, is natuurlik baie eenvoudig, want die spel is baie eenvoudig. As ons probeer om 'n wenalgoritme vir skaak te ontwerp, selfs as ons die vinnigste rekenaar gebruik, kan ons die spelboom in duisend jaar nie bereken nie! Vir sulke speletjies het ons 'n ander benadering nodig; ons benodig 'n paar kunsmatige intelligensie -algoritmes en natuurlik 'n groot verwerkingskrag. Meer hieroor in 'n toekomstige video.
Stap 5: Kode van die projek
Kom ons kyk vinnig na die kode van die projek. Ons benodig drie biblioteke om die kode saam te stel.
- Adafruit TFTLCD:
- Adafruit GFX:
- Raakskerm:
Soos u kan sien, benodig selfs 'n eenvoudige spel soos hierdie meer as 600 reëls kode. Die kode is kompleks, so ek sal dit nie in 'n kort handleiding probeer verduidelik nie. Ek sal u egter die implementering van die algoritme vir die Arduino -bewegings wys.
Eers speel ons twee ewekansige hoeke.
<int firstMoves = {0, 2, 6, 8}; // sal hierdie posisies eers gebruik vir (teller = 0; teller <4; teller ++) // Tel eerste bewegings wat gespeel word {as (bord [eersteMoves [teller]! = 0) // Eerste beweging word deur iemand gespeel {movesPlayed ++; }} doen {if (moves <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; as (bord [c] == 0) {vertraging (1000); bord [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Vervolgens kyk ons in elke ronde of die speler in die volgende beweging kan wen.
int checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) gee 2 terug; anders as (bord [0] == 1 && bord [1] == 0 && bord [2] == 1) gee 1 terug; anders as (bord [1] == 1 && bord [2] == 1 && bord [0] == 0) terugkeer 0; anders as (bord [3] == 1 && bord [4] == 1 && bord [5] == 0) terugkeer 5; anders as (bord [4] == 1 && bord [5] == 1 && bord [3] == 0) opgawe 3; anders as (bord [3] == 1 && bord [4] == 0 && bord [5] == 1) gee 4 terug; anders as (bord [1] == 0 && bord [4] == 1 && bord [7] == 1) gee 1 terug; anders 100 terug; }
Indien wel, blokkeer ons die skuif meestal. Ons blokkeer nie al die bewegings om die menslike speler kans te gee om te wen nie. Kan u agterkom watter bewegings nie geblokkeer is nie? Nadat ons die beweging geblokkeer het, speel ons 'n oorblywende hoek, of 'n ewekansige beweging. U kan die kode bestudeer en u eie onverbeterlike algoritme maklik implementeer. Soos altyd kan u die kode van die projek op hierdie instruksies vind.
OPMERKING: Aangesien Banggood dieselfde skerm met twee verskillende skermbestuurders bied, verander die initDisplay -funksie na die volgende as die kode hierbo nie werk nie:
leegte initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Stap 6: Laaste gedagtes en verbeterings
Soos u kan sien, kan ons, selfs met 'n Arduino Uno, 'n onverbeterlike algoritme vir eenvoudige speletjies bou. Hierdie projek is wonderlik, want dit is maklik om te bou, en terselfdertyd 'n goeie inleiding tot kunsmatige intelligensie en spelprogrammering. Ek sal in die toekoms probeer om 'n paar meer gevorderde projekte met kunsmatige intelligensie te bou met behulp van die kragtiger Raspberry Pi, dus bly ingeskakel! Ek hoor graag u mening oor hierdie projek.
Plaas u kommentaar hieronder en moenie vergeet om die instruksies te hou as u dit interessant vind nie. Dankie!
Aanbeveel:
Tic Tac Toe (3 in 'n ry): 10 stappe (met foto's)
Tic Tac Toe (3 in 'n ry): Hierdie projek is 'n elektroniese weergawe van die klassieke Tic-Tac-Toe potlood & papier 2 speler spel. Die hart van die stroombaan is die mikrobeheerder PIC 16F627A van Microchip. Ek het die aflaai -skakel vir 'n rekenaarbord -PDF en die HEX -kode vir
Tic Tac Toe op Arduino Met AI (Minimax -algoritme): 3 stappe
Tic Tac Toe op Arduino Met AI (Minimax Algoritme): In hierdie instruksies gaan ek jou wys hoe om 'n Tic Tac Toe -speletjie te bou met 'n AI met behulp van 'n Arduino. U kan óf teen die Arduino speel óf kyk hoe die Arduino teen homself speel. Ek gebruik 'n algoritme genaamd 'minimax -algoritme
Tic Tac Toe in Visual Basic: 3 stappe (met foto's)
Tic Tac Toe in Visual Basic: Tic Tac Toe is een van die gewildste tydspeletjies. Veral in klaskamers;). In hierdie instruksies gaan ons hierdie speletjie op ons rekenaar ontwerp met behulp van die gewilde GUI -programmeerplatform, visual basic
Tic Tac Toe met verwerking en klavier: 3 stappe
Tic Tac Toe W/ Processing & Keypad: In hierdie projek bou ons 'n Tic-Tac-Toe-speletjie met 'n Arduino Uno en die toetsbord.Die spel laat jou toe om Tic-Tac-Toe te speel, en dan die LED wat ooreenstem met die wenner sal brand.Materiaal benodig: 1 - Arduino Uno1 - Toetsenbord13 - Wires2 - 22
Arduino en Touchpad Tic Tac Toe: 8 stappe (met foto's)
Arduino en Touchpad Tic Tac Toe: Of 'n oefening in multiplexing van invoer en uitvoer, en werk met stukkies. En 'n voorlegging vir die Arduino -wedstryd. Dit is 'n implementering van 'n tic tac toe -spel met 'n 3x3 -reeks tweekleurige LED's vir 'n skerm, 'n eenvoudige weerstandige raakvlak