विषयसूची:

Arduino Space Rocks Game: 3 Steps
Arduino Space Rocks Game: 3 Steps

वीडियो: Arduino Space Rocks Game: 3 Steps

वीडियो: Arduino Space Rocks Game: 3 Steps
वीडियो: Amazing arduino project 2024, जुलाई
Anonim
Arduino स्पेस रॉक्स गेम
Arduino स्पेस रॉक्स गेम

चाहे वे कंप्यूटर पर, फोन पर, गेम कंसोल पर या स्टैंडअलोन बॉक्स पर खेले जाएं, बहुत सारे वीडियो गेम में बाधा से बचने का एक तत्व शामिल होता है। निश्चित रूप से, टोकन एकत्र करने या भूलभुलैया के माध्यम से अपना रास्ता खोजने के लिए अंक दिए जा सकते हैं, लेकिन निश्चिंत रहें कि खेल में शायद कुछ ऐसा है जिसका एकमात्र उद्देश्य आपको ऐसा करने से रोकना है। पहला वीडियो गेम पोंग था, लेकिन उसके बाद सबसे लोकप्रिय गेम "क्षुद्रग्रह" या "पीएसी-मैन" जैसी चीजें थीं। एक और हालिया बदलाव "फ्लैपी बर्ड्स" का सरल लेकिन व्यसनी खेल होगा।

हाल ही में मैंने देखा कि किसी ने "फ्लैपी बर्ड" का एक साधारण दो-स्तरीय संस्करण बनाया था जो एक सामान्य 1602 एलसीडी पर खेला जाता था। मैंने सोचा था कि यह कुछ ऐसा होगा जो पोते-पोतियों को पसंद आएगा इसलिए मैंने खरोंच से अपना खुद का बदलाव करने का फैसला किया। १६०२ संस्करण में केवल दो स्तर हैं इसलिए मैंने खेलने की कठिनाई को थोड़ा बढ़ाने के बजाय २००४ एलसीडी (20x4) का उपयोग करने का फैसला किया। मैंने "अंतरिक्ष चट्टानों" के चक्रव्यूह के माध्यम से खिलाड़ी को "जहाज" का मार्गदर्शन करके इसे "क्षुद्रग्रह" की तरह बनाने का विकल्प चुना। यहां तक कि अगर आप खेल के निर्माण में रुचि नहीं रखते हैं, तो सॉफ़्टवेयर के कुछ तत्व हो सकते हैं जिनका उपयोग आप अपने स्वयं के प्रोजेक्ट में कर सकते हैं।

चरण 1: हार्डवेयर

हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर

हार्डवेयर लगभग किसी भी Arduino संस्करण पर आधारित हो सकता है। मैंने नैनो का उपयोग करके प्रोटोटाइप किया और फिर कोड को ATMega328 चिप में जला दिया। यह वही चिप है जो नैनो में उपयोग की जाती है लेकिन इसका उपयोग करने से अधिक कॉम्पैक्ट बिल्ड और कम बिजली की खपत होती है। जैसा कि आप देख सकते हैं, मैंने सर्किट को एक छोटे ब्रेडबोर्ड पर बनाया है जो एलसीडी मॉड्यूल पर पिगीबैक करता है। दूसरा पहलू जो अलग है वह यह है कि नैनो बाहरी क्रिस्टल का उपयोग करके 16-मेगाहर्ट्ज पर चलती है लेकिन मैंने ATMega328 चिप के लिए बिल्ट-इन 8-मेगाहर्ट्ज ऑसिलेटर का उपयोग करना चुना। यह भागों और शक्ति को बचाता है।

2004 का LCD 1602 LCD की तरह ही Arduino के साथ इंटरफेस करता है। प्रदर्शन स्थानों के पते में एक दिलचस्प अंतर है। स्पष्ट रूप से एक अंतर है क्योंकि दो के बजाय चार रेखाएँ हैं लेकिन, 2004 में, तीसरी पंक्ति पहली पंक्ति का विस्तार है और चौथी पंक्ति दूसरी पंक्ति का विस्तार है। दूसरे शब्दों में, यदि आपके पास एक परीक्षण कार्यक्रम है जो एलसीडी को वर्णों की एक स्ट्रिंग भेजता है, तो 21 वां वर्ण तीसरी पंक्ति की शुरुआत में दिखाई देगा और 41 वां वर्ण पहली पंक्ति की शुरुआत में वापस आ जाएगा। मैं सॉफ्टवेयर में उस विशेषता का उपयोग भूलभुलैया की लंबाई को प्रभावी ढंग से दोगुना करने के लिए करता हूं।

मैंने अपने संस्करण की बैटरी को संचालित करने का फैसला किया इसलिए मैंने एक सामान्य 18650 ली-आयन, 3.6-वोल्ट बैटरी का उपयोग किया। इसके लिए आवश्यक है कि मैं USB रिचार्जिंग की अनुमति देने के लिए एक छोटा बोर्ड और LCD और ATMega चिप के लिए बैटरी वोल्टेज को 5 वोल्ट तक बढ़ाने के लिए एक अन्य छोटा बोर्ड जोड़ूं। चित्र मेरे द्वारा उपयोग किए गए मॉड्यूल को दिखाते हैं लेकिन ऐसे सभी मॉड्यूल भी हैं जो दोनों कार्य करते हैं।

चरण 2: सॉफ्टवेयर

सॉफ्टवेयर नैनो और ATMega328 चिप दोनों के लिए समान है। प्रोग्रामिंग विधि में एकमात्र अंतर है। मैं १६०२ एलसीडी सॉफ्टवेयर के अपने खुद के बेयरबोन संस्करण का उपयोग करता हूं और इस परियोजना में एलसीडी सॉफ्टवेयर उसी पर आधारित है। मुझे 2004 के डिस्प्ले की अतिरिक्त लाइनों को संबोधित करने के लिए क्षमताओं को जोड़ने की आवश्यकता थी और डिस्प्ले को शिफ्ट करने के लिए रूटीन भी जोड़े। डिस्प्ले शिफ्ट "जहाज" के पिछले "चट्टानों" के आंदोलन प्रभाव को प्रदान करता है।

जैसा कि पहले उल्लेख किया गया है, रेखाएँ १ और ३ एक वृत्ताकार कतार बनाती हैं और रेखाएँ २ और ४ भी ऐसा ही करती हैं। इसका मतलब है कि 20 पारियों के बाद, पंक्ति 1 और 3 की अदला-बदली की जाती है और पंक्ति 2 और 4 की अदला-बदली की जाती है। 40 पारियों के बाद लाइनें अपनी मूल स्थिति में वापस आ जाती हैं। इस व्यवहार के कारण, मूल 20-वर्ण भूलभुलैया पूरी तरह से अलग हो जाती है जब लाइनें स्वैप होती हैं। जब मैंने एक भूलभुलैया बनाने की कोशिश की तो इसने जीवन को दिलचस्प बना दिया। मैंने आखिरकार सिर्फ एक एक्सेल स्प्रेडशीट खोली ताकि मैं सॉफ्टवेयर को लगातार बदले बिना पथ को चार्ट कर सकूं। यहां उपलब्ध कराए गए सॉफ़्टवेयर में भूलभुलैया के दो संस्करण हैं (एक टिप्पणी की गई है) ताकि आप चुन सकें कि आपको कौन सा चाहिए या अपना खुद का बना लें।

मैं मूल रूप से चाहता था कि यह इतना आसान हो कि युवा पोते इसे खेल सकें, लेकिन मैं यह भी चाहता था कि अगर वे (या कोई और) इसमें बहुत अच्छा हो तो कुछ अतिरिक्त चुनौती हो। खेल 1 सेकंड पर निर्धारित शिफ्ट दर से शुरू होता है। आंतरिक टिक दर 50ms है तो इसका मतलब है कि 20 अंतराल हैं जिसके दौरान ऊपर/नीचे बटन दबाए जा सकते हैं। वास्तव में, एक दबाया हुआ बटन 2 टिक्स की खपत करता है क्योंकि प्रेस का पता लगाने के लिए 50ms के अंतराल का उपयोग किया जाता है और रिलीज के लिए प्रतीक्षा करने के लिए 50ms के अंतराल का उपयोग किया जाता है। डिफ़ॉल्ट भूलभुलैया के साथ अगली पाली से पहले आवश्यक प्रेस की अधिकतम संख्या तीन है। खेल की कठिनाई को बढ़ाने का सरल तरीका है कि पारियों के बीच के समय को कम किया जाए ताकि कोड की कुछ पंक्तियाँ स्कोर बढ़ने के साथ ही ऐसा कर सकें। न्यूनतम दर 500ms तक सीमित होने के साथ, प्रत्येक 20 शिफ्ट में शिफ्ट दर 50ms तक तेज करने के लिए निर्धारित है। इन मापदंडों को बदलना आसान है।

शिफ्ट दर को बदलने के अलावा, सॉफ्टवेयर में प्राथमिक तर्क "जहाज" को स्थानांतरित करना और यह निर्धारित करना है कि "जहाज" "चट्टान" से टकरा गया है या नहीं। ये फ़ंक्शन परिभाषित "रॉक/स्पेस" ऐरे का लाभ उठाते हैं और साथ ही वह ऐरे जो डिस्प्ले में मेमोरी लोकेशन को परिभाषित करता है। शिफ्ट काउंट एलसीडी (0-19) की लाइन लंबाई से मेल खाता है और इन सरणियों में एक इंडेक्स के रूप में उपयोग किया जाता है। तर्क इस तथ्य से कुछ जटिल है कि लाइनें हर 20 शिफ्ट में स्वैप करती हैं। इसी तरह के तर्क का उपयोग "जहाज" की स्थिति निर्धारित करने के लिए किया जाता है जो कि चार पंक्तियों में से किसी पर भी हो सकता है।

प्रत्येक नाटक के लिए स्कोर केवल हुई पारियों की संख्या की गणना है और उच्च स्कोर माइक्रोकंट्रोलर आंतरिक EEROM में सहेजा जाता है। इस मेमोरी को पढ़ने और लिखने के लिए EEPROM लाइब्रेरी का उपयोग किया जाता है। उपलब्ध दिनचर्या एकल बाइट को फ़्लोटिंग पॉइंट मानों को पढ़ने/लिखने और पढ़ने/लिखने की अनुमति देती है। यह इंगित करने के लिए कि एक उच्च स्कोर सहेजा गया है, पहले EEROM स्थान में 0xA5 का मान संग्रहीत किया जाता है। यदि वह मान पावर अप पर मौजूद है, तो उच्च स्कोर के लिए फ़्लोटिंग पॉइंट मान पढ़ा और प्रदर्शित किया जाता है। यदि 0xA5 मान मौजूद नहीं है, तो उच्च स्कोर को 1 के मान पर प्रारंभ करने के लिए एक रूटीन कहा जाता है। यदि उच्च स्कोर का रीसेट वांछित है तो उसी रूटीन को कहा जाता है। ऊपर/नीचे बटनों में से किसी एक को दबाकर और फिर पल-पल रीसेट बटन दबाकर उच्च स्कोर को 1 के मान पर वापस सेट कर दिया जाता है।

चरण 3: खेल खेलना

गेम खेल रहे हैं
गेम खेल रहे हैं
गेम खेल रहे हैं
गेम खेल रहे हैं

जब शक्ति लागू होती है, तो वर्तमान उच्च स्कोर प्रदर्शित होता है। उच्च स्कोर प्रदर्शित होने के बाद, "चट्टानों" और "जहाज" की भूलभुलैया प्रदर्शित की जाती है, फिर खेल कुछ सेकंड बाद शुरू होता है। जब "जहाज" एक "चट्टान" से टकराता है तो संदेश "क्रैश एंड बर्न" खेल के लिए स्कोर प्रदर्शित करने से पहले कुछ बार चमकता है। यदि कोई नया उच्च स्कोर बनाया जाता है, तो वह संदेश भी प्रदर्शित होता है। रीसेट बटन दबाकर एक नया गेम शुरू किया जाता है।

सिफारिश की: