Turinys:
- 1 žingsnis: Gaukite visas dalis
- 2 žingsnis: 2,8 colio liečiamas spalvotas ekranas, skirtas „Arduino“
- 3 žingsnis: projekto sukūrimas ir jo išbandymas
- 4 žingsnis: žaidimo algoritmas
- 5 žingsnis: projekto kodas
- 6 žingsnis: paskutinės mintys ir patobulinimai
Video: „Arduino Touch Tic Tac Toe“žaidimas: 6 žingsniai (su paveikslėliais)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Mieli draugai, kviečiame į kitą „Arduino“pamoką! Šioje išsamioje pamokoje mes sukursime „Arduino Tic Tac Toe“žaidimą. Kaip matote, mes naudojame jutiklinį ekraną ir žaidžiame prieš kompiuterį. Toks paprastas žaidimas kaip „Tic Tac Toe“yra puikus įvadas į žaidimų programavimą ir dirbtinį intelektą. Nors šiame žaidime nenaudosime jokių dirbtinio intelekto algoritmų, suprasime, kodėl dirbtinio intelekto algoritmai reikalingi sudėtingesniuose žaidimuose.
„Arduino“žaidimų kūrimas nėra lengvas ir reikalauja daug laiko. Bet mes galime sukurti paprastus „Arduino“žaidimus, nes tai smagu ir leis mums ištirti pažangesnes programavimo temas, tokias kaip dirbtinis intelektas. Tai puiki mokymosi patirtis, o pabaigoje turėsite gražų žaidimą vaikams!
Dabar kurkime šį projektą.
1 žingsnis: Gaukite visas dalis
Šiam projektui sukurti reikalingos šios dalys:
„Arduino Uno“▶
2,8 colio jutiklinis ekranas ▶
Projekto kaina yra labai maža. Tai tik 15 USD
Prieš bandydami sukurti šį projektą, pažiūrėkite mano parengtą vaizdo įrašą apie jutiklinį ekraną. Aš pridėjau jį prie šios instrukcijos. Tai padės suprasti kodą ir sukalibruoti jutiklinį ekraną.
2 žingsnis: 2,8 colio liečiamas spalvotas ekranas, skirtas „Arduino“
Atradau šį jutiklinį ekraną svetainėje banggood.com ir nusprendžiau jį nusipirkti, kad galėčiau jį panaudoti kai kuriuose savo projektuose. Kaip matote, ekranas yra nebrangus, jis kainuoja apie 11 USD.
Gaukite čia ▶
Ekranas siūlo 320x240 pikselių skiriamąją gebą ir yra ekranas, kuris labai palengvina ryšį su „Arduino“. Kaip matote, ekrane naudojami beveik visi „Arduino Uno“skaitmeniniai ir analoginiai kaiščiai. Naudojant šį skydą mūsų projektams lieka tik 2 skaitmeniniai kaiščiai ir 1 analoginis kaištis. Laimei, ekranas puikiai veikia ir su „Arduino Mega“, todėl kai mums reikia daugiau smeigtukų, galime naudoti „Arduino Mega“, o ne „Arduino Uno“. Deja, šis ekranas neveikia su „Arduino Due“ar „Wemos D1 ESP8266“plokšte. Kitas skydo privalumas yra tai, kad jame yra labai paprasta naudoti „micro SD“lizdas.
3 žingsnis: projekto sukūrimas ir jo išbandymas
Prijungę ekraną prie „Arduino Uno“, galime įkelti kodą ir esame pasiruošę žaisti.
Iš pradžių paspaudžiame mygtuką „Pradėti žaidimą“ir žaidimas prasideda. Pirmiausia žaidžia „Arduino“. Tada mes galime žaisti savo judesį tiesiog paliesdami ekraną. Tada „Arduino“žaidžia savo žingsnį ir pan. Žaidėjas, kuriam pavyksta sudėti tris savo ženklus horizontalioje, vertikalioje ar įstrižoje eilutėje, laimi žaidimą. Pasibaigus žaidimui, pasirodys ekranas „Game Over“. Tada galime paspausti „Play again“mygtuką, kad vėl pradėtume žaidimą.
„Arduino“puikiai žaidžia šį žaidimą. Jis laimės daugumą rungtynių, arba jei esate labai geras žaidėjas, žaidimas baigsis lygiosiomis. Aš sąmoningai sukūriau šį algoritmą, kad padarytų keletą klaidų, kad suteikčiau žaidėjui galimybę laimėti. Pridėję dar dvi eilutes prie žaidimo kodo, galime padaryti „Arduino“neįmanoma prarasti žaidimo. Bet kaip 2 USD lustas, „Arduino“procesorius, gali įveikti žmogaus smegenis? Ar mūsų sukurta programa yra protingesnė už žmogaus smegenis?
4 žingsnis: žaidimo algoritmas
Norėdami atsakyti į šį klausimą, pažvelkime į mano įdiegtą algoritmą.
Kompiuteris visada groja pirmas. Vien dėl šio sprendimo „Arduino“žaidimą daug lengviau laimėti. Pirmasis žingsnis visada yra kampas. Antrasis „Arduino“ėjimas taip pat yra atsitiktinis kampas nuo likusio, visiškai nesirūpinant žaidėjo judesiu. Nuo šio momento „Arduino“pirmiausia patikrina, ar žaidėjas gali laimėti kitą ėjimą, ir blokuoja šį ėjimą. Jei žaidėjas negali laimėti vienu judesiu, jis atlieka kampinį ėjimą, jei toks yra, arba atsitiktinį iš likusių. Štai viskas, šis paprastas algoritmas kiekvieną kartą gali įveikti žaidėją, o blogiausiu atveju žaidimas baigsis lygiosiomis. Tai nėra geriausias „Tic Tac Toe“žaidimo algoritmas, bet vienas iš paprasčiausių.
Šis algoritmas gali būti lengvai įdiegtas „Arduino“, nes „Tic Tac Toe“žaidimas yra labai paprastas, ir mes galime jį lengvai išanalizuoti ir išspręsti. Jei suprojektuosime žaidimo medį, galime atrasti keletą laimėjimo strategijų ir lengvai jas įgyvendinti kodu arba galime leisti procesoriui apskaičiuoti žaidimo medį realiu laiku ir pasirinkti geriausią žingsnį. Žinoma, šiame žaidime naudojamas algoritmas yra labai paprastas, nes žaidimas yra labai paprastas. Jei bandysime sukurti laimintį šachmatų algoritmą, net jei naudosime greičiausią kompiuterį, negalėsime apskaičiuoti žaidimo medžio per tūkstantį metų! Tokiems žaidimams mums reikia kito požiūrio, mums reikia tam tikrų dirbtinio intelekto algoritmų ir, žinoma, didžiulės apdorojimo galios. Daugiau apie tai būsimame vaizdo įraše.
5 žingsnis: projekto kodas
Greitai pažvelkime į projekto kodą. Kad sudarytume kodą, mums reikia trijų bibliotekų.
- „Adafruit“TFTLCD:
- „Adafruit GFX“:
- Jutiklinis ekranas:
Kaip matote, net tokiam paprastam žaidimui reikia daugiau nei 600 kodo eilučių. Kodas yra sudėtingas, todėl nesistengsiu jo paaiškinti trumpoje pamokoje. Tačiau aš jums parodysiu „Arduino“judesių algoritmo įgyvendinimą.
Iš pradžių žaidžiame du atsitiktinius kampus.
<int firstMoves = {0, 2, 6, 8}; // pirmiausia naudos šias pozicijas (skaitiklis = 0; skaitiklis <4; skaitiklis ++) // Skaičiuokite pirmuosius atliktus ėjimus {if (board [firstMoves [counter]!! = 0) // Pirmąjį ėjimą atlieka kažkas {movePlayed ++; }} do {if (juda <= 2) {int randomMove = atsitiktinis (4); int c = firstMoves [randomMove]; if (lenta [c] == 0) {uždelsimas (1000); lenta [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Toliau kiekviename raunde tikriname, ar žaidėjas gali laimėti kitu ėjimu.
int checkOponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; else if (lenta [0] == 1 && lenta [1] == 0 && lenta [2] == 1) grąžinti 1; else if (lenta [1] == 1 && lenta [2] == 1 && lenta [0] == 0) grąžina 0; kitaip jei (lenta [3] == 1 && lenta [4] == 1 && lenta [5] == 0) grąžina 5; kitaip jei (lenta [4] == 1 && lenta [5] == 1 && lenta [3] == 0) grąžins 3; kitaip jei (lenta [3] == 1 && lenta [4] == 0 && lenta [5] == 1) grąžina 4; else if (lenta [1] == 0 && lenta [4] == 1 && lenta [7] == 1) grąžinti 1; kitaip grąžinti 100; }
Jei taip, mes blokuojame šį judėjimą, dažniausiai. Mes neužblokuojame visų ėjimų, kad suteiktume žaidėjui galimybę laimėti. Ar galite sužinoti, kurie judesiai nėra užblokuoti? Užblokavę ėjimą, žaidžiame likusį kampą arba atsitiktinį ėjimą. Galite išstudijuoti kodą ir lengvai įgyvendinti savo neprilygstamą algoritmą. Kaip visada, šiame instrukcijoje rasite pridėtą projekto kodą.
PASTABA: Kadangi „Banggood“siūlo tą patį ekraną su dviem skirtingomis ekrano tvarkyklėmis, jei aukščiau pateiktas kodas neveikia, pakeiskite „initDisplay“funkciją į šią:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
6 žingsnis: paskutinės mintys ir patobulinimai
Kaip matote, net naudodami „Arduino Uno“galime sukurti neprilygstamą paprastų žaidimų algoritmą. Šis projektas yra puikus, nes jį lengva sukurti, o kartu ir puikus įvadas į dirbtinį intelektą ir žaidimų programavimą. Ateityje bandysiu kurti pažangesnius projektus su dirbtiniu intelektu, naudodamas galingesnį „Raspberry Pi“, todėl sekite naujienas! Norėčiau išgirsti jūsų nuomonę apie šį projektą.
Prašome paskelbti savo komentarus žemiau ir nepamirškite pamėgti pamokymų, jei jums tai įdomu. Dėkoju!
Rekomenduojamas:
„Python Tic Tac Toe“žaidimas: 4 žingsniai
„Python Tic Tac Toe“žaidimas: „Python Tic Tac Toe“žaidimas Šis žaidimas sukurtas kompiuterine „Python“versija Aš naudoju „Python“redaktorių, pavadintą: pycharm, taip pat galite naudoti įprastą „Python“kodo redaktorių
Elektroninis „Tic-Tac-Toe“žaidimas medinėje dėžutėje: 5 žingsniai
Elektroninis „Tic-Tac-Toe“žaidimas medinėje dėžutėje: Sveiki. Aš pristatau juokingą „Tic-Tac-Toe“žaidimą naujame leidime. Ieškojau panašaus projekto internete, bet idėja čia unikali. VILiuosi:) Taigi pradėkime dabar
„Microbit Tic Tac Toe“žaidimas: 4 žingsniai (su nuotraukomis)
„Microbit Tic Tac Toe“žaidimas: Šiam projektui mano bendradarbis - @descartez ir aš sukūrėme nuostabų „tic tac toe“žaidimą, naudodamiesi mikrobitų radijo funkcijomis. Jei dar negirdėjote apie mikrobitus, tai nuostabus mikrovaldiklis, skirtas mokyti vaikus programuoti. Jie
3D4x žaidimas: 3D 4x4x4 „Tic-Tac-Toe“: 5 žingsniai (su paveikslėliais)
3D4x žaidimas: 3D 4x4x4 „Tic-Tac-Toe“: ar pavargai žaisti tą patį, seną, nuobodų, dvimatį „Tic-tac-toe“?? Na, mes turime jums sprendimą! Tic-tac-toe trijų matmenų !!! 2 žaidėjams, šiame 4x4x4 kube, gaukite 4 šviesos diodus iš eilės (bet kuria kryptimi) ir jūs laimėsite! Tau pavyksta. Tu pla
Interaktyvus „Tic-Tac Toe“žaidimas, valdomas naudojant „Arduino“: 6 žingsniai
Interaktyvus „Tic-Tac Toe“žaidimas, valdomas naudojant „Arduino“: Fizinio „Tic-Tac-Toe“projekto tikslas yra perkelti gerai žinomą žaidimą į fizinę sritį. Iš pradžių žaidimą žaidžia du žaidėjai ant popieriaus lapo - paeiliui dėdami „X“ir „O“simbolius. Mūsų idėja buvo ištirti žaidėjų elgesį