Mundarija:

Arduino Space Rocks o'yini: 3 qadam
Arduino Space Rocks o'yini: 3 qadam

Video: Arduino Space Rocks o'yini: 3 qadam

Video: Arduino Space Rocks o'yini: 3 qadam
Video: Just Wait For Level 100 😮 2024, Iyul
Anonim
Arduino Space Rocks o'yini
Arduino Space Rocks o'yini

Ular kompyuterda, telefonda, o'yin konsolida yoki mustaqil qutida o'ynaladimi, ko'p video o'yinlar to'siqlardan qochish elementini o'z ichiga oladi. Albatta, tokenlarni yig'ish yoki labirintdan o'tish yo'lini topish uchun ballar berilishi mumkin, lekin ishonchingiz komilki, o'yinda sizning maqsadingiz bunga yo'l qo'ymaslikdir. Birinchi video o'yin Pong edi, lekin shundan keyin eng mashhur o'yinlar "Asteroidlar" yoki "Pac-Man" kabi narsalar edi. So'nggi o'zgarish "Flappy Birds" ning oddiy, ammo o'ziga qaram bo'lgan o'yini bo'ladi.

Yaqinda men ko'rdimki, kimdir "Flappy Bird" ning ikki darajali oddiy 1602 LCD displeyida o'ynagan. Bu nevaralar yoqishi mumkin deb o'yladim, shuning uchun men o'z variantimni noldan qilishga qaror qildim. 1602 versiyasi faqat ikkita darajaga ega, shuning uchun men o'yin qiyinchiliklarini biroz oshirish uchun 2004 yilgi LCD (20x4) o'lchamidan foydalanishga qaror qildim. Men ham o'yinchini "kosmik qoyalar" labirintidan "kema" ga olib borib, "asteroidlar" ga o'xshash qilishni tanladim. Agar siz o'yinni yaratishga qiziqmasangiz ham, siz o'zingizning loyihalaringizdan birida foydalanishingiz mumkin bo'lgan dasturiy ta'minotning ba'zi elementlari bo'lishi mumkin.

1 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna

Uskuna deyarli har qanday Arduino versiyasiga asoslangan bo'lishi mumkin. Men prototipni Nano yordamida qildim va keyin kodni ATMega328 chipiga yozdim. Bu Nano -da ishlatiladigan chip, lekin uni o'zi ishlatish yanada ixcham tuzilishga va kam quvvat sarflashga imkon beradi. Ko'rib turganingizdek, men sxemani LCD moduliga cho'zilgan kichik non panelida qurdim. Boshqa tomoni shundaki, Nano tashqi kristal yordamida 16 MGts da ishlaydi, lekin men ATMega328 chipi uchun o'rnatilgan 8 MGtsli osilatordan foydalanishni tanladim. Bu qismlar va quvvatni tejaydi.

2004 yilgi LCD displeyi Arduino -ga 1602 LCD displeyi bilan bir xil. Ko'rgazma joylarining manzili bilan qiziq bir farq bor. Shubhasiz, farq bor, chunki ikkita o'rniga to'rtta chiziq bor, lekin 2004 yilda uchinchi qator birinchi qatorning kengaytmasi va to'rtinchi qator ikkinchi qatorning kengaytmasi. Boshqacha qilib aytadigan bo'lsak, agar sizda LCD displeyga bir nechta belgilar yuborilgan test dasturi bo'lsa, 21 -belgi uchinchi qatorning boshida ko'rsatiladi va 41 -belgi birinchi qatorning boshiga qaytadi. Men bu xususiyatni labirint uzunligini ikki baravar oshirish uchun dasturiy ta'minotda ishlataman.

Men o'z batareyamni quvvatlantirishga qaror qildim, shuning uchun umumiy 18650 Li-ionli, 3,6 voltli batareyadan foydalandim. Buning uchun men USB -ni qayta zaryad qilish uchun kichik taxtani va LCD va ATMega chiplari uchun 5 voltli batareyaning kuchlanishini oshirish uchun boshqa kichik kartani qo'shishim kerak edi. Rasmlarda men ishlatgan modullar ko'rsatilgan, lekin ikkala funktsiyani bajaradigan hammasi bir xil modullar mavjud.

2 -qadam: dasturiy ta'minot

Dastur Nano va ATMega328 chiplari uchun bir xil. Faqat farq dasturlash usulida. Men 1602 LCD dasturiy ta'minotining o'z yalang'och versiyasidan foydalanaman va bu loyihadagi LCD dasturiy ta'minoti bunga asoslangan. Menga 2004 yilgi displeyning qo'shimcha satrlarini hal qilish qobiliyatini qo'shish kerak edi, shuningdek, displeyni o'zgartirish tartibini qo'shish kerak edi. Displeyning siljishi "tosh" ning "kema" yonidagi harakat effektini ta'minlaydi.

Avval aytib o'tganimizdek, 1 va 3 -qatorlar dumaloq navbatni tashkil qiladi, 2 va 4 -qatorlar ham shunday qiladi. Bu shuni anglatadiki, 20 smenadan so'ng 1 va 3 -qatorlar almashtiriladi va 2 va 4 -qatorlar almashtiriladi. 40 smenadan so'ng, chiziqlar asl holatiga qaytadi. Bu xatti-harakatlar tufayli, chiziqlar almashganda, 20 belgidan iborat asl labirint butunlay boshqacha bo'ladi. Bu labirint yaratmoqchi bo'lganimda hayotni qiziqarli qildi. Oxir -oqibat men Excel jadvalini ochdim, shuning uchun dasturiy ta'minotni doimiy ravishda o'zgartirmasdan yo'lni belgilashim mumkin edi. Bu erda taqdim etilgan dasturiy ta'minot labirintning ikkita versiyasiga ega (bittasi sharhlangan), siz xohlagan variantni tanlashingiz yoki o'zingiz yaratishingiz mumkin.

Men bu ishni yosh nabiralar o'ynashi mumkin bo'lgan darajada sodda bo'lishini xohlardim, lekin agar ular (yoki boshqa birov) bu ishni juda yaxshi bilsalar, qo'shimcha qiyinchiliklar bo'lishini xohlardim. O'yin smenaning 1 soniyada o'rnatilgan tezligi bilan boshlanadi. Ichki savdo tezligi 50ms, shuning uchun yuqoriga/pastga tugmalarini bosish mumkin bo'lgan 20 ta interval mavjud. Aslida, bosilgan tugma 2 tikani iste'mol qiladi, chunki pressni aniqlash uchun 50ms oralig'i, boshqa 50ms oralig'i esa chiqarilishini kutish uchun ishlatiladi. Odatiy labirint bilan, keyingi siljishdan oldin, bosishning maksimal soni - uchta. O'yin qiyinchiliklarini ko'paytirishning oddiy usuli - bu smenalar orasidagi vaqtni qisqartirish, shuning uchun bir nechta kod satrlari ballar oshgani sayin bajariladi. Shift tezligi har 20 smenada 50ms tezlikka o'rnatiladi, minimal tezlik 500ms bilan cheklangan. Bu parametrlarni o'zgartirish oson.

Shift tezligini o'zgartirishdan tashqari, dasturiy ta'minotdagi asosiy mantiq "kema" ni harakatlantirish va "kema" "tosh" bilan to'qnashganligini aniqlashdir. Bu funktsiyalar aniqlangan "rock/space" qatoridan, shuningdek, displeydagi xotira joylarini belgilaydigan qatordan foydalanadi. Shift soni LCD-ning chiziq uzunligiga mos keladi (0-19) va bu massivlarga indeks sifatida ishlatiladi. Mantiq biroz murakkab, chunki chiziqlar har 20 smenada almashadi. Xuddi shunday mantiq ham "kema" ning to'rtta satrdan birida joylashishini aniqlash uchun ishlatiladi.

Har bir o'yin uchun ballar - bu siljishlar sonini hisoblash va yuqori ball ichki EEROM mikrokontrollerida saqlanadi. EEPROM kutubxonasi bu xotirani o'qish va yozish uchun ishlatiladi. Mavjud tartiblar o'zgaruvchan nuqta qiymatlarini bitta bayt o'qish/yozish va o'qish/yozish imkonini beradi. 0xA5 qiymati yuqori ball saqlanganligini ko'rsatish uchun birinchi EEROM joyida saqlanadi. Agar bu qiymat kuchlanishda mavjud bo'lsa, yuqori ball uchun o'zgaruvchan nuqta qiymati o'qiladi va ko'rsatiladi. Agar 0xA5 qiymati mavjud bo'lmasa, u holda yuqori ballni 1 qiymatiga boshlash tartibi chaqiriladi, agar yuqori ballni qayta tiklash zarur bo'lsa, xuddi shu tartib chaqiriladi. Yuqoriga/pastga tugmalaridan birini bosib ushlab turing va keyin qayta o'rnatish tugmachasini bosib, yuqori ball 1 qiymatiga qaytariladi.

3 -qadam: O'yin o'ynash

O'yin o'ynash
O'yin o'ynash
O'yin o'ynash
O'yin o'ynash

Quvvat ishlatilganda, joriy yuqori ball ko'rsatiladi. Yuqori ball ko'rsatilgandan so'ng, "qoyalar" va "kema" labirintlari ko'rsatiladi va o'yin bir necha soniyadan keyin boshlanadi. "Kema" "toshga" urilganda, "CRASH AND BURN" xabari bir necha marta miltillaydi va o'yinda hisob ochiladi. Agar yangi yuqori ball qo'yilsa, bu xabar ham ko'rsatiladi. Qayta tiklash tugmachasini bosib yangi o'yin boshlanadi.

Tavsiya: