Мазмұны:

Arduino Space Rocks ойыны: 3 қадам
Arduino Space Rocks ойыны: 3 қадам

Бейне: Arduino Space Rocks ойыны: 3 қадам

Бейне: Arduino Space Rocks ойыны: 3 қадам
Бейне: Он знает… 2024, Шілде
Anonim
Arduino Space Rocks ойыны
Arduino Space Rocks ойыны

Олар компьютерде, телефонда, ойын консолінде немесе жеке қорапта ойналса да, көптеген бейне ойындарда кедергілерді болдырмау элементі бар. Әрине, жетондарды жинау немесе лабиринтте жол табу үшін ұпайлар берілуі мүмкін, бірақ ойында сізге мұны болдырмауға бағытталған бірдеңе бар екеніне сенімді болыңыз. Бірінші видео ойын Понг болды, бірақ содан кейін ең танымал ойындар «астероидтар» немесе «Pac-Man» сияқты нәрселер болды. Соңғы нұсқа «Flappy Birds» қарапайым, бірақ тәуелді ойын болады.

Жақында мен біреудің 1602 СК дисплейінде ойнатылатын «Flappy Bird» қарапайым екі деңгейлі нұсқасын жасағанын көрдім. Мен бұл немерелерге ұнайтын нәрсе болар деп ойладым, сондықтан мен өз нұсқамды нөлден бастап жасауды шештім. 1602 нұсқасында тек екі деңгей бар, сондықтан мен ойынның қиындығын сәл жоғарылату үшін оның орнына 2004 СКД (20х4) қолдануға шешім қабылдадым. Мен сондай -ақ ойыншыны «ғарыштық жартастар» лабиринті арқылы «кемеге» бағыттау арқылы «астероидтарға» ұқсас етуді жөн көрдім. Егер сіз ойынға қызығушылық танытпасаңыз да, сіз өзіңіздің жеке жобаңыздың бірінде қолдануға болатын бағдарламалық жасақтаманың кейбір элементтері болуы мүмкін.

1 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал

Жабдық Arduino -ның кез келген нұсқасына негізделуі мүмкін. Мен прототипті Nano көмегімен жасадым, содан кейін кодты ATMega328 чипіне жаздым. Бұл нанода қолданылатын чип, бірақ оны өздігінен пайдалану ықшам конструкцияға және қуатты аз тұтынуға мүмкіндік береді. Көріп отырғаныңыздай, мен тізбекті СКД модулінде шошақтай болатын кішкене тақтаға салдым. Нано сыртқы кристалды қолдана отырып 16 МГц жиілігінде жұмыс істейді, бірақ мен ATMega328 чипі үшін кіріктірілген 8 МГц осцилляторды қолдануды таңдадым. Бұл бөлшектер мен қуатты үнемдейді.

2004 жылғы СКД Arduino интерфейсі 1602 СКД сияқты. Көрсету орындарының адрестелуінде қызықты айырмашылық бар. Әлбетте, айырмашылық бар, себебі екі жолдың орнына төрт жол бар, бірақ 2004 жылы үшінші жол - бірінші жолдың, төртінші жол - екінші жолдың жалғасы. Басқаша айтқанда, егер сізде СКД -ге символдар қатарын жіберетін тест бағдарламасы болса, 21 -ші таңба үшінші жолдың басында пайда болады, ал 41 -ші таңба бірінші жолдың басына оралады. Мен бұл сипаттаманы лабиринт ұзындығын екі есе тиімді ету үшін бағдарламалық қамтамасыз етуде қолданамын.

Мен өзімнің аккумуляторымды қуаттандыруды шештім, сондықтан мен жалпы 18650 Li-ion, 3,6 вольтты батареяны қолдандым. Бұл USB -ді қайта зарядтауға мүмкіндік беретін шағын тақтаны және СКД мен ATMega чипі үшін аккумулятордың кернеуін 5 вольтке дейін жоғарылататын басқа тақтаны қосуды талап етті. Суреттер мен қолданған модульдерді көрсетеді, бірақ екі функцияны орындайтын модульдер бар.

2 -қадам: Бағдарламалық қамтамасыз ету

Бағдарламалық қамтамасыз ету Nano үшін де, ATMega328 чипі үшін де бірдей. Айырмашылық тек бағдарламалау әдісінде. Мен 1602 СК бағдарламалық жасақтаманың Barebone нұсқасын қолданамын және осы жобадағы СКД бағдарламалық жасақтамасы осыған негізделген. Маған 2004 жылғы дисплейдің қосымша жолдарын шешу үшін мүмкіндіктерді қосу керек болды, сонымен қатар дисплейді ауыстыру тәртібі қосылды. Дисплейдің ауысуы «кемелердің» жанындағы «тастардың» қозғалыс әсерін қамтамасыз етеді.

Бұрын айтылғандай, 1 және 3 -жолдар дөңгелек кезекті құрайды, ал 2 және 4 -жолдар да жасайды. Бұл 20 ауысымнан кейін 1 және 3 -жолдар ауыстырылады және 2 және 4 -жолдар ауыстырылады дегенді білдіреді. 40 ауысымнан кейін желілер бастапқы орындарына оралады. Бұл мінез-құлықтың арқасында, 20 таңбадан тұратын түпнұсқа лабиринт сызықтар ауысқан кезде мүлдем өзгеше болады. Бұл лабиринт құруға тырысқанда өмірді қызықты етті. Мен бағдарламалық қамтамасыз етуді үнемі өзгертпей -ақ жолды диаграммалау үшін Excel кестесін аштым. Мұнда ұсынылған бағдарламалық жасақтамада лабиринттің екі нұсқасы бар (біреуіне түсініктеме берілген), осылайша сіз қайсысын таңдағаныңызды таңдай аласыз немесе өзіңіз жасай аласыз.

Мен бастапқыда бұл жас немерелер ойнай алатындай қарапайым болғанын қаладым, бірақ егер олар (немесе басқа біреу) өте жақсы білсе, оған қосымша қиындықтар болғанын қаладым. Ойын 1 секундқа белгіленген ауысым жылдамдығынан басталады. Ішкі сауда жылдамдығы 50 мс құрайды, демек жоғары/төмен түймелерін басуға болатын 20 интервал бар. Іс жүзінде, басылған түйме 2 тиканы тұтынады, себебі басуды анықтау үшін 50 мс интервал, ал босатуды күту үшін тағы 50 мс интервал қолданылады. Әдепкі лабиринтпен келесі ауысымға дейін басудың максималды саны - үш. Ойынның күрделілігін арттырудың қарапайым әдісі - ауысым арасындағы уақытты қысқарту, сондықтан ұпай өскен сайын кодтың бірнеше жолы дәл осылай жасайды. Ауысу жылдамдығы әр 20 ауысымда 50 мс жылдамдыққа орнатылады, ең төменгі жылдамдық 500 мспен шектеледі. Бұл параметрлерді өзгерту оңай.

Ауысу жылдамдығын өзгертуден басқа, бағдарламалық жасақтаманың негізгі логикасы - «кемені» жылжыту және «кеменің» «таспен» соқтығысқанын анықтау. Бұл функциялар анықталған «рок/кеңістік» жиынын, сонымен қатар дисплейдегі жад орындарын анықтайтын жиымды пайдаланады. Жылжыту саны СКД жолының ұзындығына сәйкес келеді (0-19) және осы массивтерге индекс ретінде қолданылады. Логика біршама күрделі, өйткені сызықтар 20 ауысымда есептеледі. Ұқсас логика төрт сызықтың кез келгенінде болатын «кеменің» орнын анықтау үшін қолданылады.

Әр ойынның ұпайы - бұл ауысымдардың санын санау және жоғары балл ішкі EEROM микроконтроллерінде сақталады. EEPROM кітапханасы осы жадқа оқу мен жазуды орындау үшін қолданылады. Қол жетімді процедуралар өзгермелі нүкте мәндерін бір байтты оқуға/жазуға және оқуға/жазуға мүмкіндік береді. 0xA5 мәні жоғары балл сақталғанын көрсету үшін бірінші EEROM орнында сақталады. Егер бұл мән қосылғанда болса, онда жоғары балл үшін өзгермелі нүкте мәні оқылады және көрсетіледі. Егер 0xA5 мәні болмаса, онда жоғары баллды 1 мәніне инициализациялау тәртібі шақырылады, егер жоғары баллды қалпына келтіру қажет болса, сол тәртіп шақырылады. Жоғары балл 1 мәніне қайтарылады, жоғары/төмен батырмаларының бірін басып тұрыңыз, содан кейін қалпына келтіру түймесін бір сәтте басыңыз.

3 -қадам: Ойын ойнау

Ойын ойнау
Ойын ойнау
Ойын ойнау
Ойын ойнау

Қуат қосылған кезде ағымдағы жоғары балл көрсетіледі. Жоғары ұпай көрсетілгеннен кейін «тастар» мен «кеме» лабиринті көрсетіледі, содан кейін ойын бірнеше секундтан кейін басталады. «Кеме» «тасқа» соғылған кезде, ойынның ұпайын көрсетпес бұрын, «ҰРАУ ЖӘНЕ КҮЙУ» хабары бірнеше рет жыпылықтайды. Егер жаңа жоғары балл қойылса, онда бұл хабар да көрсетіледі. Қалпына келтіру түймесін басу арқылы жаңа ойын басталады.

Ұсынылған: