Բովանդակություն:

Arduino Space Rocks խաղ. 3 քայլ
Arduino Space Rocks խաղ. 3 քայլ

Video: Arduino Space Rocks խաղ. 3 քայլ

Video: Arduino Space Rocks խաղ. 3 քայլ
Video: REAL RACING 3 LEAD FOOT EDITION 2024, Հուլիսի
Anonim
Arduino Space Rocks խաղ
Arduino Space Rocks խաղ

Անկախ նրանից, թե դրանք խաղում են համակարգչի վրա, հեռախոսով, խաղային վահանակով կամ առանձին տուփով, շատ տեսախաղեր ներառում են խոչընդոտներից խուսափելու տարր: Իհարկե, կարող են միավորներ շնորհվել խորհրդանիշներ հավաքելու կամ լաբիրինթոսում ձեր ճանապարհը գտնելու համար, բայց վստահ եղեք, որ հավանաբար խաղի մեջ կա ինչ -որ բան, որի միակ նպատակը ձեզ կանխելն է դա անել: Առաջին տեսախաղը Պոնգն էր, բայց դրանից հետո ամենահայտնին այնպիսի խաղեր էին, ինչպիսիք էին «Աստերոիդները» կամ «Pac-Man»-ը: Ավելի նոր տարբերակ կլինի «Flappy Birds» - ի պարզ, բայց կախվածություն առաջացնող խաղը:

Վերջերս ես տեսա, որ ինչ-որ մեկը պատրաստել է «Flappy Bird»-ի պարզ երկաստիճան տարբերակ, որը նվագարկվել է ընդհանուր 1602 LCD- ով: Ես մտածեցի, որ դա այն է, ինչ թոռներին դուր կգա, ուստի որոշեցի զրոյից անել իմ սեփական տատանումները: 1602 տարբերակն ունի միայն երկու մակարդակ, ուստի ես որոշեցի օգտագործել 2004 թվականի LCD (20x4) փոխարեն խաղը փոքր -ինչ մեծացնելու խաղը: Ես նաև նախընտրեցի այն դարձնել ավելի «Աստերոիդներ» ՝ խաղացողին հանձնարարելով «նավ» ուղեկցել «տիեզերական ժայռերի» լաբիրինթոսով: Նույնիսկ եթե դուք շահագրգռված չեք խաղը կառուցելով, կարող են լինել ծրագրաշարի որոշ տարրեր, որոնք կարող եք օգտագործել ձեր սեփական նախագծերից մեկում:

Քայլ 1: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Սարքավորումը կարող է հիմնված լինել գրեթե ցանկացած Arduino տարբերակի վրա: Ես պատրաստեցի նախատիպը ՝ օգտագործելով Nano- ն, այնուհետև ծածկագիրն այրեցի ATMega328 չիպի մեջ: Դա նույն չիպն է, որն օգտագործվում է Նանոյում, բայց ինքնին օգտագործելը թույլ է տալիս ավելի կոմպակտ կառուցվածք ունենալ և ավելի քիչ էներգիա ծախսել: Ինչպես տեսնում եք, ես միացումը կառուցեցի մի փոքրիկ տախտակի վրա, որը խոզուկներ էր դրել LCD մոդուլի վրա: Մյուս կողմը, որը տարբերվում է, այն է, որ Nano- ն աշխատում է 16 ՄՀց հաճախականությամբ ՝ օգտագործելով արտաքին բյուրեղ, բայց ես նախընտրեցի օգտագործել ներկառուցված 8 ՄՀց տատանում ՝ ATMega328 չիպի համար: Դա խնայում է մասերն ու ուժը:

2004 թվականի LCD- ն Arduino- ին միանում է այնպես, ինչպես 1602 LCD- ը: Հետաքրքիր տարբերություն ցուցադրման վայրերի հասցեավորման մեջ է: Ակնհայտ է, որ տարբերություն կա, քանի որ երկուսի փոխարեն կա չորս տող, բայց 2004 -ին երրորդ տողը առաջին տողի ընդլայնումն է, իսկ չորրորդը `երկրորդ տողի ընդլայնումը: Այլ կերպ ասած, եթե դուք ունենայիք թեստային ծրագիր, որը պարզապես մի շարք նիշ էր ուղարկում LCD- ին, 21 -րդ նիշը կհայտնվեր երրորդ տողի սկզբում, իսկ 41 -րդ նիշը կվերադառնա մինչև առաջին տողի սկիզբը: Ես օգտագործում եմ այդ բնութագիրը ծրագրաշարում `արդյունավետորեն կրկնապատկելու լաբիրինթոսի երկարությունը:

Ես որոշեցի մարտկոցով աշխատեցնել իմ տարբերակը, այնպես որ ես օգտագործեցի սովորական 18650 Li-ion, 3.6 վոլտ մարտկոց: Դրա համար անհրաժեշտ էր ավելացնել մի փոքր տախտակ, որը թույլ կտա USB- ի լիցքավորումը, և մեկ այլ փոքր տախտակ `մարտկոցի լարումը մինչև 5 վոլտ LCD- ի և ATMega չիպի համար: Նկարները ցույց են տալիս իմ օգտագործած մոդուլները, բայց կան նաև բոլորը մեկում մոդուլներ, որոնք կատարում են երկու գործառույթները:

Քայլ 2: Softwareրագրակազմ

Theրագրակազմը նույնն է ինչպես Nano- ի, այնպես էլ ATMega328 չիպի համար: Տարբերությունը միայն ծրագրավորման մեթոդի մեջ է: Ես օգտագործում եմ 1602 LCD ծրագրակազմի իմ բոբիկ տարբերակը և այս ծրագրում LCD ծրագրակազմը հիմնված է դրա վրա: Ես իսկապես պետք է ավելացնեի հնարավորություններ `2004 թվականի ցուցադրման լրացուցիչ տողերին անդրադառնալու համար, ինչպես նաև ցուցադրման փոփոխման ռեժիմներ ավելացնելու համար: Displayուցադրման հերթափոխը ապահովում է «նավից» անցնող «ժայռերի» շարժման էֆեկտը:

Ինչպես արդեն նշվեց, 1 -ին և 3 -րդ տողերը կազմում են շրջանաձև հերթ, իսկ 2 -րդ և 4 -րդ տողերը ՝ նույնպես: Դա նշանակում է, որ 20 հերթափոխից հետո 1 և 3 տողերը փոխվում են, իսկ 2 և 4 տողերը ՝ փոխվում: 40 հերթափոխից հետո գծերը վերադառնում են իրենց սկզբնական դիրքերին: Այս վարքագծի պատճառով սկզբնական 20 նիշանոց լաբիրինթոսը բոլորովին այլ է դառնում, երբ գծերը փոխվում են: Դա հետաքրքիր էր դարձնում կյանքը, երբ փորձում էի լաբիրինթոս ձևավորել: Վերջապես ես պարզապես բացեցի Excel աղյուսակ, որպեսզի կարողանամ գծել ուղին ՝ առանց ծրագրակազմը անընդհատ փոխելու: Այստեղ ներկայացված ծրագրակազմն ունի լաբիրինթոսի երկու տարբերակ (մեկը մեկնաբանվում է), այնպես որ կարող եք ընտրել, թե որն եք ցանկանում կամ կազմել ձեր սեփականը:

Ես ի սկզբանե ցանկանում էի, որ սա այնքան պարզ լինի, որ երիտասարդ թոռները կարողանային խաղալ այն, բայց ես նաև ցանկանում էի, որ այն ունենար լրացուցիչ մարտահրավեր, եթե նրանք (կամ մեկ ուրիշը) դրան շատ լավ տիրապետեին: Խաղը սկսվում է 1 վայրկյան սահմանած հերթափոխի արագությամբ: Ներքին տիկնաչափը 50ms է, ինչը նշանակում է, որ կա 20 ընդմիջում, որոնց ընթացքում կարելի է սեղմել վեր/վար կոճակները: Իրականում, սեղմված կոճակը սպառում է 2 տիկ, քանի որ 50 մմ ընդմիջում է օգտագործվում մամուլը հայտնաբերելու համար, և մեկ այլ 50 մս ընդմիջում `արձակմանը սպասելու համար: Լռելյայն լաբիրինթոսով, հաջորդ հերթափոխից առաջ պահանջվող սեղմումների առավելագույն թիվը երեքն է: Խաղի դժվարությունը մեծացնելու պարզ միջոցը հերթափոխների միջև ժամանակի կրճատումն է, այնպես որ կոդի մի քանի տողերը դա անում են հենց հաշիվը բարձրացնելիս: Տեղափոխման արագությունը պետք է արագանա 50 մգ յուրաքանչյուր 20 հերթափոխով, իսկ նվազագույն արագությունը սահմանափակվի 500 մ: Այս պարամետրերը հեշտ է փոխել:

Տեղափոխման արագությունը փոխելուց բացի, ծրագրաշարի հիմնական տրամաբանությունը «նավը» տեղափոխելն է և որոշել ՝ արդյոք «նավը» բախվե՞լ է «ժայռի» հետ: Այս գործառույթներն օգտվում են սահմանված «ժայռ/տարածություն» զանգվածից, ինչպես նաև այն զանգվածից, որը սահմանում է ցուցադրման հիշողության վայրերը: Տեղափոխման հաշվարկը համապատասխանում է LCD- ի գծի երկարությանը (0-19) և օգտագործվում է որպես ինդեքս այս զանգվածների մեջ: Տրամաբանությունը որոշ չափով բարդանում է նրանով, որ գծերը փոխվում են յուրաքանչյուր 20 հերթափոխի հաշվարկի ժամանակ: Նմանատիպ տրամաբանություն է օգտագործվում «նավի» դիրքը որոշելու համար, որը կարող է լինել չորս տողերից որևէ մեկի վրա:

Յուրաքանչյուր խաղի հաշիվը պարզապես տեղի ունեցած տեղաշարժերի քանակն է, և բարձր գնահատականը պահվում է միկրոկառավարիչի ներքին EEROM- ում: EEPROM գրադարանը օգտագործվում է այս հիշողության համար կարդալու և գրելու համար: Առկա ռեժիմները թույլ են տալիս մեկ բայթ կարդալ/գրել և կարդալ/գրել լողացող կետերի արժեքներ: 0xA5 արժեքը պահվում է առաջին EEROM վայրում `նշելու, որ բարձր միավորը պահպանվել է: Եթե այդ արժեքը ներկա է միացման ժամանակ, ապա բարձր միավորի համար լողացող կետի արժեքը կարդացվում և ցուցադրվում է: Եթե 0xA5 արժեքը բացակայում է, ապա ռեժիմը կոչվում է բարձր գնահատականը սկսելու համար մինչև 1 արժեք: Այդ նույն ռեժիմը կոչվում է, եթե ցանկալի է բարձր միավորի վերականգնում: Բարձր միավորը կրկին դրվում է 1 արժեքի ՝ պահելով վերև/ներքև կոճակներից մեկը, այնուհետև մի պահ սեղմելով վերակայման կոճակը:

Քայլ 3: Խաղացեք խաղը

Խաղալ խաղը
Խաղալ խաղը
Խաղալ խաղը
Խաղալ խաղը

Երբ էներգիան կիրառվում է, ներկայիս բարձր միավորը ցուցադրվում է: Բարձր գնահատականի ցուցադրումից հետո ցուցադրվում են «ժայռերի» և «նավի» լաբիրինթոսը, իսկ խաղը սկսվում է մի քանի վայրկյան անց: Երբ «նավը» հարվածում է «ժայռին», «ASԱԽԵԼ ԵՎ ԱՅՆԵԼ» հաղորդագրությունը մի քանի անգամ թարթում է խաղի հաշիվը ցուցադրելուց առաջ: Եթե նոր բարձր գնահատական է տրվում, ապա այդ հաղորդագրությունը նույնպես ցուցադրվում է: Նոր խաղ է սկսվում ՝ սեղմելով վերակայման կոճակը:

Խորհուրդ ենք տալիս: