Mundarija:
- 1 -qadam: Barcha qismlarni oling
- 2 -qadam: Arduino uchun 2,8 dyuymli sensorli rangli displey
- 3 -qadam: Loyihani yaratish va uni sinovdan o'tkazish
- 4 -qadam: O'yin algoritmi
- 5 -qadam: Loyihaning kodi
- 6 -qadam: Yakuniy fikrlar va yaxshilanishlar
Video: Arduino Touch Tic Tac Toe o'yini: 6 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Aziz do'stlar, Arduino -ning boshqa darsiga xush kelibsiz! Ushbu batafsil qo'llanmada biz Arduino Tic Tac Toe o'yinini qurmoqchimiz. Ko'rib turganingizdek, biz sensorli ekranni ishlatamiz va biz kompyuterga qarshi o'ynaymiz. Tic Tac Toe kabi oddiy o'yin - bu o'yin dasturlash va sun'iy intellektga ajoyib kirish. Garchi biz bu o'yinda sun'iy intellekt algoritmlaridan foydalanmasak ham, nima uchun sun'iy intellekt algoritmlari murakkab o'yinlarda talab qilinishini tushunamiz.
Arduino uchun o'yinlarni ishlab chiqish oson emas va ko'p vaqtni talab qiladi. Ammo biz Arduino uchun oddiy o'yinlar qura olamiz, chunki bu qiziqarli va bu bizga sun'iy intellekt kabi bir qancha ilg'or dasturlash mavzularini o'rganishga imkon beradi. Bu ajoyib o'rganish tajribasi va oxirida siz bolalar uchun yoqimli o'yin o'tkazasiz!
Endi bu loyihani tuzamiz.
1 -qadam: Barcha qismlarni oling
Loyihani amalga oshirish uchun quyidagi qismlar zarur:
Bir Arduino Uno ▶
2.8 dyuymli sensorli ekran ▶
Loyihaning qiymati juda past. Bu atigi 15 dollar
Ushbu loyihani amalga oshirishdan oldin, men sensorli displey haqida tayyorlagan videoni tomosha qiling. Men buni ushbu ko'rsatmaga biriktirdim. Bu sizga kodni tushunishga va sensorli ekranni sozlashga yordam beradi.
2 -qadam: Arduino uchun 2,8 dyuymli sensorli rangli displey
Men bu sensorli ekranni banggood.com saytida topdim va uni ba'zi loyihalarimda ishlatishga harakat qilib sotib olishga qaror qildim. Ko'rib turganingizdek, displey arzon, uning narxi 11 dollar atrofida.
Bu yerdan oling ▶
Displey 320x240 pikselli piksellar sonini taqdim etadi va u qalqon sifatida keladi, bu esa Arduino bilan ulanishni juda osonlashtiradi. Ko'rib turganingizdek, displeyda Arduino Uno -ning deyarli barcha raqamli va analog pinlari ishlatiladi. Ushbu qalqondan foydalanganda bizda faqat 2 ta raqamli pin va 1 ta analog pin bor. Yaxshiyamki, displey Arduino Mega bilan ham yaxshi ishlaydi, shuning uchun bizga ko'proq pin kerak bo'lganda Arduino Uno o'rniga Arduino Mega -dan foydalanishimiz mumkin. Afsuski, bu displey Arduino Due yoki Wemos D1 ESP8266 kartasi bilan ishlamaydi. Qalqonning yana bir afzalligi shundaki, u foydalanish uchun juda qulay bo'lgan micro SD uyasini taklif qiladi.
3 -qadam: Loyihani yaratish va uni sinovdan o'tkazish
Ekranni Arduino Uno -ga ulab bo'lgach, biz kodni yuklay olamiz va biz o'ynashga tayyormiz.
Avvaliga biz "O'yinni boshlash" tugmachasini bosamiz va o'yin boshlanadi. Arduino birinchi bo'lib o'ynaydi. Biz o'z harakatlarimizni ekranga tekkizishimiz mumkin. Keyin Arduino o'z harakatini o'ynaydi va hokazo. Uchta belgini gorizontal, vertikal yoki diagonal qatorga qo'yishga muvaffaq bo'lgan o'yinchi g'alaba qozonadi. O'yin tugagach, O'yin tugashi ekrani paydo bo'ladi. Keyin o'yinni qayta boshlash uchun yana o'ynash tugmachasini bosishimiz mumkin.
Arduino bu o'yinda juda yaxshi. U ko'p o'yinlarda g'alaba qozonadi, yoki agar siz juda yaxshi o'yinchi bo'lsangiz, o'yin durang bilan tugaydi. Men bu algoritmni qasddan odam o'yinchisiga g'alaba qozonish uchun xato qilish uchun ishlab chiqdim. O'yin kodiga yana ikkita qator qo'shib, biz Arduino -ni o'yinni yutqazib bo'lmaydigan qilib qo'yishimiz mumkin. Lekin qanday qilib 2 dollarlik chip - Arduino CPU inson miyasini mag'lub qila oladi? Biz ishlab chiqqan dastur inson miyasidan aqlli bo'ladimi?
4 -qadam: O'yin algoritmi
Bu savolga javob berish uchun, men bajargan algoritmni ko'rib chiqaylik.
Kompyuter har doim birinchi o'rinda turadi. Faqatgina bu qaror Arduino uchun g'alabani osonlashtiradi. Birinchi qadam har doim burchakdir. Arduino uchun ikkinchi harakat - bu o'yinchining harakatiga umuman ahamiyat bermasdan qolganlarning tasodifiy burchagi. Shu vaqtdan boshlab, Arduino birinchi navbatda o'yinchi keyingi harakatda g'alaba qozona oladimi yoki yo'qligini tekshiradi. Agar o'yinchi bitta harakatda g'alaba qozona olmasa, u burchakda, qolganida tasodifiy harakatda o'ynaydi. Mana, bu oddiy algoritm har safar odam o'yinchisini mag'lub etishi mumkin yoki eng yomon holatda o'yin durangga olib keladi. Bu eng yaxshi tac toe o'yini algoritmi emas, lekin eng oddiylaridan biri.
Bu algoritm Arduinoda osonlik bilan amalga oshirilishi mumkin, chunki Tic Tac Toe o'yini juda oddiy va biz uni oson tahlil qilib, hal qila olamiz. Agar biz o'yin daraxtini loyihalashtirsak, biz ba'zi yutuqli strategiyalarni kashf etamiz va ularni kodda osonlik bilan amalga oshiramiz, yoki biz protsessorga o'yin daraxtini real vaqtda hisoblashiga ruxsat beramiz va o'zi eng yaxshi harakatni tanlaydi. Albatta, biz bu o'yinda ishlatadigan algoritm juda oddiy, chunki o'yin juda oddiy. Agar biz shaxmat uchun yutuqli algoritmni yaratishga harakat qilsak, hatto eng tezkor kompyuterdan foydalansak ham, ming yil ichida o'yin daraxtini hisoblay olmaymiz! Bunday o'yinlar uchun bizga boshqa yondashuv kerak, bizga sun'iy intellektning ba'zi algoritmlari va, albatta, katta ishlov berish kuchi kerak. Bu haqda batafsil keyingi videoda.
5 -qadam: Loyihaning kodi
Loyihaning kodini tezda ko'rib chiqaylik. Kodni kompilyatsiya qilish uchun bizga uchta kutubxona kerak.
- Adafruit TFTLCD:
- Adafruit GFX:
- Sensorli ekran:
Ko'rib turganingizdek, hatto bunday oddiy o'yin uchun ham 600 dan ortiq kod satri kerak. Kod murakkab, shuning uchun men uni qisqa darslikda tushuntirishga harakat qilmayman. Men sizga Arduino harakatlari algoritmining bajarilishini ko'rsataman.
Avvaliga biz ikkita tasodifiy burchakni o'ynaymiz.
<int firstMoves = {0, 2, 6, 8}; // bu pozitsiyalarni birinchi navbatda ishlatadi (taymer = 0; hisoblagich <4; hisoblagich ++) // Birinchi o'ynalgan harakatlarni sanash {if (board [firstMoves [counter]! = 0) // Birinchi harakatni kimdir o'ynaydi {movePlayed ++; }} qilish {if (harakatlari <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (taxta [c] == 0) {kechikish (1000); taxta [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Keyingi, har bir turda o'yinchi keyingi harakatda g'alaba qozona oladimi yoki yo'qligini tekshirib ko'ramiz.
int checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) qaytish 2; else if (board [0] == 1 && board [1] == 0 && board [2] == 1) 1 qaytarish; aks holda (board [1] == 1 && board [2] == 1 && board [0] == 0) 0 qaytaring; aks holda (bort [3] == 1 && board [4] == 1 && board [5] == 0) 5 qaytish; aks holda (board [4] == 1 && board [5] == 1 && board [3] == 0) 3 qaytish; aks holda (bort [3] == 1 && board [4] == 0 && board [5] == 1) qaytish 4; aks holda (board [1] == 0 && board [4] == 1 && board [7] == 1) 1 qaytarish; boshqa 100 qaytaring; }
Ha bo'lsa, biz ko'pincha bu harakatni to'sib qo'yamiz. Biz inson o'yinchisiga g'alaba qozonish imkoniyatini berish uchun barcha harakatlarni to'smaymiz. Qaysi harakatlar bloklanmaganligini topa olasizmi? Harakatni to'sib qo'ygandan so'ng, biz qolgan burchakni yoki tasodifiy harakatni o'ynaymiz. Siz kodni o'rganishingiz va o'zingizning tengsiz algoritmingizni osongina amalga oshirishingiz mumkin. Har doimgidek, ushbu ko'rsatmaga biriktirilgan loyiha kodini topishingiz mumkin.
QAYD: Banggood ikkita displey drayveri bilan bir xil displeyni taklif qilgani uchun, agar yuqoridagi kod ishlamasa, initDisplay funksiyasini quyidagicha o'zgartiring:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
6 -qadam: Yakuniy fikrlar va yaxshilanishlar
Ko'rib turganingizdek, hatto Arduino Uno -da ham biz oddiy o'yinlar uchun tengsiz algoritm tuza olamiz. Bu loyiha juda zo'r, chunki uni qurish oson va shu bilan birga sun'iy intellekt va o'yin dasturlashiga ajoyib kirish. Men kelgusida yanada kuchli Raspberry Pi yordamida sun'iy intellekt yordamida yanada ilg'or loyihalarni qurishga harakat qilaman, shuning uchun bizni kuzatib turing! Bu loyiha haqidagi fikringizni eshitishni istardim.
Iltimos, sharhlaringizni quyida yozing va agar sizga qiziq bo'lsa, ko'rsatmalarni yoqtirishni unutmang. Rahmat!
Tavsiya:
Python Tic Tac Toe o'yini: 4 qadam
Python Tic Tac Toe O'yini: python tic tac toe o'yini, bu o'yin pythonda yaratilgan, u kompyuter tilida python muharriridan foydalangan: pycharm, siz oddiy python kod muharriridan ham foydalanishingiz mumkin
DIY Arduino Tic Toc Toe o'yini: 6 qadam (rasmlar bilan)
DIY Arduino Tic Toc Toe o'yini: Tic Tac Toe o'yini - bu ikki kishilik klassik o'yin. Agar siz bolalar, oila va do'stlar bilan o'ynasangiz, bu qiziqarli bo'ladi. Bu erda men qanday qilib Arduino Uno, Push tugmalari va pikselli LEDlar yordamida Tic Tac Toe o'yinini yasashni ko'rsatdim. Bu Arduino 4 dan 4 gacha bo'lgan Tic Tac Toe -ga asoslangan
Microbit Tic Tac Toe o'yini: 4 qadam (rasmlar bilan)
Microbit Tic Tac Toe O'yini: Ushbu loyiha uchun mening hamkasbim - @descartez va men mikrobitlarning radio funksiyasidan foydalangan holda ajoyib tac toe o'yini yaratdik. Agar siz ilgari mikrobitlar haqida eshitmagan bo'lsangiz, ular bolalarga dasturlashni o'rgatish uchun mo'ljallangan ajoyib mikrokontroller. Ular
Arduino bilan boshqariladigan interaktiv Tic-Tac Toe o'yini: 6 qadam
Arduino bilan boshqariladigan interaktiv Tic-Tac-Toe o'yini: Jismoniy Tic-Tac-Toe loyihasining maqsadi-taniqli o'yinni jismoniy sohaga ko'chirish. Dastlab, o'yinni ikkita o'yinchi qog'ozga - "X" va "O" belgilarini navbat bilan qo'yish orqali o'ynaydi. Bizning fikrimiz futbolchilarning xatti -harakatlarini tekshirish edi
Arduino va Touchpad Tic Tac Toe: 8 qadam (rasmlar bilan)
Arduino va Touchpad Tic Tac Toe: Yoki kirish va chiqishni ko'paytirish, bitlar bilan ishlash mashqlari. Va Arduino tanloviga ariza. Bu displey uchun 3x3 rangli ikki rangli LEDlar, oddiy qarshilikli sensorli panel yordamida tik tac toe o'yinini amalga oshirish