विषय
Google Play Store पर सबसे लोकप्रिय श्रेणी हमेशा गेम रही है। हालाँकि हम सभी शायद वेब ब्राउज़र, ईमेल क्लाइंट और इंस्टेंट मैसेजिंग ऐप जैसे महत्वपूर्ण उत्पादकता ऐप का उपयोग करते हैं, फिर भी गेमिंग मोबाइल अनुभव का एक महत्वपूर्ण हिस्सा है। इसलिए यह कोई आश्चर्य की बात नहीं है कि बहुत से लोग जो एंड्रॉइड के लिए विकसित करना सीखना चाहते हैं वे एक गेम बनाकर शुरू करना चाहते हैं। इसके अलावा, आइए ईमानदार रहें, एक खेल लिखना एक उत्पादकता ऐप विकसित करने की तुलना में एक पूरे लोड अधिक मजेदार है!
एंड्रॉइड की आधिकारिक भाषा जावा है और आधिकारिक विकास वातावरण एंड्रॉइड स्टूडियो है। यदि आप जावा में देखना चाहते हैं तो मैं हमारे जावा बेसिक्स ट्यूटोरियल का सुझाव देता हूं, और यदि आप सीखना चाहते हैं कि एंड्रॉइड स्टूडियो का उपयोग करके ऐप कैसे लिखना है तो मेरा सुझाव है कि आप अपना पहला एंड्रॉइड ऐप लिखने पर हमारे ट्यूटोरियल की जांच करें। हालाँकि जावा और एंड्रॉइड स्टूडियो एंड्रॉइड के लिए विकसित करने के एकमात्र तरीके नहीं हैं। आप हमारे गाइड में उपलब्ध भाषाओं और एसडीके का अवलोकन पा सकते हैं: मैं एंड्रॉइड ऐप विकसित करना चाहता हूं - मुझे किन भाषाओं को सीखना चाहिए?
प्रोग्रामिंग भाषा गाइड में उल्लिखित एसडीके में से एक कोरोना है, मुख्य रूप से गेम लिखने के लिए डिज़ाइन की गई एक तीसरी पार्टी एसडीके है। जावा के बजाय, कोरोना एक तेजी से पटकथा भाषा का उपयोग करता है, जो अभी तक शक्तिशाली सीखना आसान है। हालाँकि, कोरोना एकमात्र मोबाइल गेमिंग SDK नहीं है जो Lua का उपयोग करता है, अन्य प्रसिद्ध उदाहरणों में Cocos2d-X, Marmalade और Gideros शामिल हैं।
डाउनलोड करो और इंस्टॉल करो
कोरोना के साथ आरंभ करने के लिए आपको एसडीके डाउनलोड और इंस्टॉल करने की आवश्यकता है। कोरोना वेबसाइट पर जाएं और डाउनलोड बटन दबाएं। किट को डाउनलोड करने से पहले आपको एक खाता (जो मुफ़्त है) बनाना होगा। यदि आप एमुलेटर में अपने प्रोग्राम को चलाने के बजाय एक वास्तविक .apk फ़ाइल बनाना चाहते हैं, तो आपको जावा 7 को इंस्टॉल करना होगा, हालांकि आपको एंड्रॉइड एसडीके स्थापित करने की आवश्यकता नहीं है। जावा 7 डेवलपमेंट किट इंस्टॉल करने के लिए ओरेकल की वेबसाइट पर जाएं, “जावा एसई डेवलपमेंट किट 7u79 Java नामक सेक्शन देखें और अपने पीसी के लिए वर्जन डाउनलोड करें।
एक बार जब आप कोरोना स्थापित कर लेते हैं तो आपको इसे सक्रिय करने की आवश्यकता होती है। यह एक बार की प्रक्रिया है, जो मुफ्त है। कोरोना सिम्युलेटर शुरू करें और लाइसेंस के लिए सहमत हों। ईमेल पता और पासवर्ड दर्ज करें जिसे आपने डाउनलोड के लिए उपयोग किया था, और लॉगिन पर क्लिक करें।
परियोजना शुरू करना
कोरोना सिम्युलेटर के भीतर से "नई परियोजना" पर क्लिक करें। अपने एप्लिकेशन के लिए "एप्लिकेशन का नाम:" फ़ील्ड में एक नाम दर्ज करें और बाकी सेटिंग्स को अपनी चूक पर छोड़ दें। ओके पर क्लिक करें।"
अब तीन विंडो दिखाई देंगी। पहले दो कोरोना सिम्युलेटर और कोरोना सिम्युलर आउटपुट हैं। कोरोना एक फ़ाइल एक्सप्लोरर विंडो भी खोलेगा जिसमें आपके प्रोजेक्ट के लिए फाइलें दिखाई जाएंगी।
प्रोजेक्ट निर्देशिका में अधिकांश फाइलें (उनमें से कुछ 23) एप्लिकेशन आइकन के लिए हैं! अभी हमारे लिए सबसे महत्वपूर्ण फ़ाइल है main.lua, क्योंकि यह वह जगह है जहां हम अपने ऐप के लिए कोड लिखेंगे।
लुआ का परिचय
इससे पहले कि हम कोड लिखने में जुट जाएं, हमें लुआ की सीटी-स्टॉप यात्रा करने की आवश्यकता है। Lua दुभाषिया (याद रखें यह एक स्क्रिप्टिंग भाषा है, संकलित भाषा नहीं है) Windows, OS X और Linux के लिए उपलब्ध है। हालाँकि यह कोरोना में बनाया गया है, इसलिए इस समय आपको कुछ भी अतिरिक्त स्थापित करने की आवश्यकता नहीं है। लुआ के साथ खेलने का सबसे आसान तरीका ऑनलाइन लाइव डेमो का उपयोग करना है।
आप Lua के बारे में बहुत सारे अच्छे ट्यूटोरियल ऑनलाइन पा सकते हैं और आपको Lua संदर्भ मैनुअल, Lua में प्रोग्रामिंग, The.Lua.Tutorial, और Tutorials Point Lua Tutorial पर एक नज़र डालनी चाहिए।
यहाँ एक छोटा Lua कार्यक्रम है जो आपको Lua की कुछ प्रमुख विशेषताओं को दिखाएगा:
स्थानीय फ़ंक्शन doubleIt (x) रिटर्न x * 2 अंत के लिए i = 1,10,1 do x = doubleIt (i) यदि (x == 10) तो प्रिंट ("दस") बाकी प्रिंट (डबल इट) (i) समाप्ति छोर
ऊपर दिए गए कोड में तीन महत्वपूर्ण लुआ का निर्माण दिखाया गया है: फ़ंक्शन, लूप, और यदि कथन। कार्यक्रम doubleIt () बहुत सरल है, यह पैरामीटर में पारित किए गए को दोगुना करता है एक्स.
मुख्य कोड एक है के लिये 1 से 10 तक लूप। यह कॉल करता है doubleIt () प्रत्येक पुनरावृत्ति के लिए। यदि रिटर्न मान 10 है (अर्थात कब मैं 5) है तो कोड "दस" को प्रिंट करता है अन्यथा यह केवल परिणाम को प्रिंट करता है doubleIt ().
यदि आपके पास कोई कोडिंग अनुभव है, तो उदाहरण कोड का पालन करना आसान होना चाहिए। यदि आप कुछ बुनियादी प्रोग्रामिंग सीखना चाहते हैं तो मेरा सुझाव है कि आप अपने कौशल को सुधारने के लिए उपरोक्त कुछ संसाधनों का उपयोग करें।
खेल लिख रहा है
कोरोना में बुनियादी कार्यक्रम लिखना सरल है। आपको केवल एक फ़ाइल के साथ खुद को चिंता करने की आवश्यकता है, main.lua, और कोरोना को सभी भारी उठाने दें। हम जिस खेल को लिखने जा रहे हैं वह एक सरल "टैप" खेल है। एक गुब्बारा या बम स्क्रीन को फेल कर देगा। यदि खिलाड़ी गुब्बारे पर टैप करता है तो वे एक बिंदु स्कोर करते हैं, वे एक बम पर टैप करते हैं, फिर स्कोर 2 के रूप में विभाजित किया जाएगा। कोड लिखने के लिए आपको एडिट करना होगा main.lua। आप इसे किसी भी टेक्स्ट एडिटर में कर सकते हैं।
कोरोना एसडीके में एक अंतर्निर्मित 2D भौतिकी इंजन है, जो बिल्डिंग गेम को बहुत आसान बनाता है। खेल को लिखने में पहला कदम भौतिकी इंजन को शुरू करना है:
स्थानीय भौतिकी = आवश्यकता ("भौतिकी") Phys.start ()
कोड काफी आत्म-व्याख्यात्मक है। मॉड्यूल भौतिकी लोड और आरंभिक है, इसे चर को सौंपा गया है भौतिक विज्ञान। इंजन को सक्षम करने के लिएphysics.start () कहा जाता है।
आगे हम कुछ सहायक चर बनाते हैं जो न केवल इस सरल खेल के लिए बल्कि अधिक जटिल खेलों के लिए भी उपयोगी होंगे। halfW तथा halfH स्क्रीन चौड़ाई के आधे और स्क्रीन ऊंचाई के आधे के लिए मानों को पकड़ो:
halfW = display.contentWidth * 0.5 halfH = display.contentHeight * 0.5
प्रदर्शन ऑब्जेक्ट एक पूर्व-परिभाषित वस्तु है जो कोरोना वैश्विक रूप से उपलब्ध है।
अब पहला कदम आता है कि वास्तव में स्क्रीन पर कुछ होता है:
स्थानीय bkg = display.newImage ("night_sky.png", halfW, halfH)
साथ ही गुण जैसे contentHeight तथा contentWidth, को प्रदर्शन ऑब्जेक्ट में बहुत सारे उपयोगी कार्य भी हैं। नया चित्र() फ़ंक्शन एक छवि फ़ाइल (इस मामले में .png) को पढ़ता है और इसे स्क्रीन पर प्रदर्शित करता है। प्रदर्शन ऑब्जेक्ट्स को परतों में प्रदान किया जाता है, इसलिए चूंकि यह पहली छवि है जिसे हम स्क्रीन पर डाल रहे हैं, तो यह हमेशा पृष्ठभूमि होगी (जब तक कि कोड स्पष्ट रूप से कुछ ऐसा करने के लिए नहीं करता है)। मापदंडों halfW तथा halfH छवि को बीच में रखने के लिए कोरोना को बताएं।
इस बिंदु पर आप एमुलेटर में कोड चला सकते हैं और पृष्ठभूमि छवि देख सकते हैं। यदि आप फ़ाइल को सहेजते हैं, तो एमुलेटर ध्यान देगा कि फ़ाइल बदल गई है और पुनः लॉन्च करने की पेशकश करता है। यदि ऐसा नहीं होता है तो फ़ाइल-> पुनः उपयोग करें।
चूंकि उपयोगकर्ता गुब्बारे पर टैप करने के लिए अंक बनाएगा, इसलिए हमें स्कोर चर को इनिशियलाइज़ करना होगा और स्क्रीन पर स्कोर प्रदर्शित करना होगा:
स्कोर = 0 स्कोरटैक्स = प्रदर्शन.न्यू टेक्स्ट (स्कोर, आधा, 10)
स्कोर को कल्पनाशील नामित चर में रखा जाएगा स्कोर,तथा scoreText वह वस्तु है जो स्कोर को प्रदर्शित करता है। पसंद नया चित्र(), newText () स्क्रीन पर कुछ डालें, इस केस टेक्स्ट में। जबसे scoreText एक वैश्विक चर है तो हम किसी भी बिंदु पर पाठ को बदल सकते हैं। लेकिन हम जल्द ही मिल जाएगा।
आप एमुलेटर को पुनः लोड कर सकते हैं और स्क्रीन के शीर्ष की ओर 0 डिस्प्ले का स्कोर देख सकते हैं।
वाम: बस पृष्ठभूमि। सही: पृष्ठभूमि और स्कोर।
अब कुछ और मुश्किल हो गया है, लेकिन मुझे चिंता नहीं है कि मैं इसे लाइन द्वारा समझाऊंगा:
स्थानीय फ़ंक्शन गुब्बारा (ईवेंट) यदि (Event.phase == "शुरू हुआ") तो रनटाइम: निष्कासनसूचीकारक ("एंटरफ़्रेम", ईवेंट। स्वयं) event.target:removeSelf () स्कोर = स्कोर + 1 स्कोरटैक्स.टेक्स्ट = स्कोर समाप्ति अंत
ऊपर दिया गया कोड एक फ़ंक्शन को परिभाषित करता है balloonTouched () जिसे हर बार एक गुब्बारा टैप किया जाता है। हमने अभी तक कोरोना से यह नहीं कहा है कि इस फ़ंक्शन को हर बार गुब्बारा टैप करने के लिए कहा जाए, जो बाद में आएगा, लेकिन जब हम ऐसा करते हैं तो यह फ़ंक्शन कहा जाता है।
टैपिंग या टच इवेंट में ड्रैगिंग को सपोर्ट करने के लिए कई स्टेज होते हैं। उपयोगकर्ता एक वस्तु पर अपनी उंगली डालता है, यह "शुरू" चरण है। यदि वे किसी भी दिशा में अपनी उंगली को स्लाइड करते हैं, तो यह "स्थानांतरित" चरण है। जब उपयोगकर्ता स्क्रीन से अपनी उंगली उठाता है, तो यह "समाप्त" चरण है।
की पहली पंक्ति balloonTouched () चेक हम "शुरू" चरण में हैं। हम गुब्बारे को हटाना चाहते हैं और स्कोर को जल्द से जल्द बढ़ाना चाहते हैं। यदि फ़ंक्शन को "समाप्त" जैसे अन्य चरणों के लिए फिर से बुलाया जाता है, तो फ़ंक्शन कुछ भी नहीं करता है।
के अंदरअगर कथन कोड की चार लाइनें हैं। चलो अंतिम दो के साथ पहले सौदा करते हैं, क्योंकि वे सरल हैं।स्कोर = स्कोर + १ बस एक से स्कोर बढ़ाता है औरscoreText.text = स्कोर नए स्कोर को प्रतिबिंबित करने के लिए स्क्रीन पर स्कोर पाठ को बदलता है। याद है कि मैंने कैसे कहाscoreText वैश्विक था और कहीं भी पहुँचा जा सकता है, ठीक है कि हम यहाँ क्या करते हैं।
अब पहले दो पंक्तियों के लिए। एक बार एक गुब्बारा या बम स्क्रीन के नीचे गिर जाता है, यह अभी भी ऐप की मेमोरी में मौजूद है, यह सिर्फ इतना है कि आप इसे देख नहीं सकते हैं। जैसे-जैसे खेल आगे बढ़ता जाएगा इन ऑफ-स्क्रीन ऑब्जेक्ट्स की संख्या लगातार बढ़ती जाएगी। इसलिए हमारे पास एक ऐसा तंत्र होना चाहिए जो वस्तुओं को नष्ट कर देता है जब वे दृष्टि से बाहर हो जाते हैं। हम एक समारोह में कहते हैंगुप्त, जिसे हमने अभी तक नहीं लिखा है। उस फ़ंक्शन को खेल के दौरान प्रति फ्रेम एक बार कहा जाएगा। एक बार एक गुब्बारा टैप हो गया है तो हमें इसे हटाने और कॉल को हटाने की आवश्यकता है जो यह जांचता है कि गुब्बारा बंद हो गया है या नहीं।
रेखाevent.target:removeSelf () गुब्बारा हटा देता है। जब एक स्पर्श घटना होती है, तो श्रोता फ़ंक्शन का एक पैरामीटर होता हैघटना पैरामीटर। यह फ़ंक्शन के बारे में बताता है और यह किस प्रकार की घटना है, उदा।event.phase। यह भी बताता है कि कौन सा गुब्बारा टैप किया गया था,event.target। removeSelf () फ़ंक्शन यह करता है कि यह क्या कहता है, यह ऑब्जेक्ट को हटा देता है (इस मामले में एक गुब्बारा)।
इससे पहले की लाइन "एंटरफ़्रेम" श्रोता को हटा देती है, जो कि फ़ंक्शन है जिसे यह देखने के लिए हर फ्रेम कहा जाता है कि क्या गुब्बारा स्क्रीन के नीचे गिर गया है। जब हम लिखने के लिए आएंगे तो हम और अधिक विस्तार से देखेंगेगुप्त श्रोता समारोह।
तो, पुनर्कथन करने के लिए।balloonTouched ()जाँचता है कि यह स्पर्श क्रम की शुरुआत है। यह "एंटरफ़्रेम" श्रोता को हटा देता है, जो कि फ़ंक्शन है जिसे यह देखने के लिए हर फ्रेम कहा जाता है कि क्या गुब्बारा स्क्रीन के नीचे गिर गया है। यह फिर गुब्बारे को हटाता है, स्कोर बढ़ाता है और नए स्कोर को प्रदर्शित करता है।
यह गुब्बारे के लिए था, अब हमें बमों के लिए कुछ समान चाहिए:
स्थानीय समारोह बम (घटना) अगर (Event.phase == "शुरू हुआ") तो रनटाइम: RemoveEventListener ("enterFrame", event.self) event.target:removeSelf () स्कोर - math.floor (स्कोर * 0.5) scoreText.text = स्कोर अंत
जैसा कि आप देख सकते हैं कि कोड अपवाद के समान है जो स्कोर को बढ़ाने के बजाय, स्कोर को 0.5 से गुणा किया जाता है (यानी 2 से विभाजित)। math.floor () फ़ंक्शन पूर्णांक के निकटतम स्कोर को गोल करता है। इसलिए यदि खिलाड़ी का स्कोर 3 था और उसने बम का दोहन किया तो नया स्कोर 1 होगा, न कि 1.5।
मैंने उल्लेख किया गुप्त () पहले कार्य करें। इस फ़ंक्शन को यह जांचने के लिए प्रत्येक फ्रेम कहा जाएगा कि क्या कोई वस्तु स्क्रीन से चली गई है। यहाँ कोड है:
स्थानीय फ़ंक्शन ऑफ़स्क्रीन (स्वयं, ईवेंट) यदि (self.y == nil) तब समाप्त होता है यदि (self.y> display.contentHeight + 50) तो रनटाइम: निष्कासनसूचीकारक ("enterFrame", स्व) स्व: निष्कासन () अंत अंत
कंप्यूटिंग में एक ऐसी स्थिति है जिसे रेस की स्थिति के रूप में जाना जाता है। यह वह जगह है जहां दो चीजें होने जा रही हैं, लेकिन एक पहले हो सकती है, या कभी-कभी दूसरी हो सकती है। यह एक दौड़ है। कुछ दौड़ की स्थितियां अनदेखी हैं क्योंकि एक चीज हमेशा पहले होती है, लेकिन वे एक दिन में दिलचस्प कीड़े पैदा कर सकते हैं, सही परिस्थितियों में, दूसरी चीज पहले होती है और फिर सिस्टम टूट जाता है!
इस सरल खेल में एक दौड़ की स्थिति है क्योंकि दो चीजें एक-दूसरे के बहुत करीब हो सकती हैं: एक गुब्बारा टैप किया जा रहा है और गुप्त () फ़ंक्शन को यह देखने के लिए बुलाया जा रहा है कि क्या गुब्बारा स्क्रीन से बाहर चला गया है। परिणाम यह है कि गुब्बारे को हटाने के लिए कोड को कॉल किया जा सकता है और फिर गुप्त () फ़ंक्शन को कहा जाता है (जो प्रति सेकंड 30 बार की तरह होता है)। घटनाओं के इस अजीब अनुक्रम के आसपास पाने के लिए गुप्त () फ़ंक्शन की जाँच करने की आवश्यकता है कि क्या y वस्तु का मूल्य है शून्य (नल) या नहीं। अगर यह होता है शून्य तो इसका मतलब है कि ऑब्जेक्ट पहले ही हटा दिया गया है, इसलिए साथ चले जाएँ, ये उन droids के लिए नहीं हैं जिन्हें हम खोज रहे हैं।
यदि ऑब्जेक्ट अभी भी खेल में है, तो इसकी स्थिति की जांच करें, अगर यह स्क्रीन से 50 पिक्सेल चला गया है, तो इसे हटा दें और श्रोता को हटा दें ताकि गुप्त () इस ऑब्जेक्ट के लिए फ़ंक्शन को फिर से नहीं बुलाया जाएगा। यह सुनिश्चित करने के लिए कोडगुप्त () कहा जाता है कि हर फ्रेम कोड के अगले भाग का हिस्सा है।
इस खेल का पूरा आधार यह है कि नए गुब्बारे या बम स्क्रीन को गिराते रहेंगे। इसलिए हमें एक ऐसे समारोह की आवश्यकता है जो या तो एक नया गुब्बारा बनाए या एक नया बम:
स्थानीय फ़ंक्शन जोड़ें स्थानीय बम = display.newImage ("bomb.png", startX; -300) Phys.addBody (बम) bomb.enterFrame = ऑफस्क्रीन रनटाइम: addEventListener ("enterFame", बम): addEventListener ("टच", बॉम्बॉचेड) - गुब्बारा स्थानीय गुब्बारा = display.newImage ("red_balloon.png", startX, -300) Phys.addBody (गुब्बारा) गुब्बारा।इंटरफ़्रेम = ऑफ़स्क्रीन रनटाइम: addventventListener ("enterFrame", गुब्बारा): AddEventListener ("स्पर्श" गुब्बारा) समाप्त अंत
फ़ंक्शन की पहली पंक्ति यह तय करती है कि गुब्बारा कहां से गिराएगा एक्स विमान। यदि गुब्बारा या बम हमेशा बीच में गिरा, तो यह बहुत दिलचस्प नहीं होगा! इसलिएstartx स्क्रीन की चौड़ाई के 10 प्रतिशत और 90 प्रतिशत के बीच एक यादृच्छिक संख्या है।
अगला एक यादृच्छिक संख्या 1 और 5 के बीच चुना जाता है।यदि संख्या 1 है तो एक बम गिराया जाएगा। यदि यह 2, 3, 4 या 5 है तो एक गुब्बारा गिरा दिया जाएगा। इसका मतलब है कि बमों को लगभग 20 प्रतिशत समय में गिरा दिया जाएगा।
बम और गुब्बारा कोड काफी समान हैं। पहले छवि (या तो बम या गुब्बारा) का उपयोग करके प्रदर्शित किया जाता हैनया चित्र(). आईटी इस एक्स स्थिति यह है किstartx जबकि इसके y स्थिति को -300 पर सेट किया जाता है, अर्थात स्क्रीन के शीर्ष पर। इसका कारण यह है कि हम स्क्रीन क्षेत्र के बाहर से दृश्य क्षेत्र में और फिर नीचे से वस्तु को गिराना चाहते हैं। चूंकि हम 2D भौतिकी इंजन का उपयोग कर रहे हैं, इसलिए वस्तु को गिरने के लिए प्रारंभिक दूरी का थोड़ा सा देना अच्छा है, इसलिए यह कुछ गति प्राप्त कर सकता है।
के लिए कॉलphysics.addBody () द्वारा लोड की गई छवि लेता है नया चित्र() और इसे भौतिकी इंजन में एक वस्तु में बदल देता है। यह बहुत शक्तिशाली है। किसी भी छवि फ़ाइल को एक निकाय में बनाया जा सकता है जो केवल कॉल करके गुरुत्वाकर्षण और टकरावों का जवाब देता हैphysics.addBody ()।
बम या गुब्बारे कोड की अंतिम तीन पंक्तियों ने श्रोताओं को मंत्रमुग्ध कर दिया। सेटिंग कर रहा हैenterFrame प्रॉपर्टी कोरोना बताती है कि हर फ्रेम और कॉल करने के लिए कौन सा कार्य करना हैरनटाइम: addEventListener () इसे सेट करता है। अंत में कॉल करने के लिएballoon: addEventListener () कोरोना को बताता है कि बम या गुब्बारे को छूने पर कौन सा कार्य करना है।
और अब खेल लगभग पूरा हो गया है। हमें कोड की दो और लाइनें चाहिए:
addNewBalloonOrBomb () टाइमर.परफॉर्मवर्थडेल्ले (500, addNewBalloonOrBomb, 0)
पहली पंक्ति स्पष्ट रूप से कॉल करके बहुत पहले बम या गुब्बारा गिरती हैaddNewBalloonOrBomb ()। दूसरी पंक्ति एक टाइमर सेट करती है जो कॉल करेगीaddNewBalloonOrBomb () हर आधे सेकंड (500 मिलीसेकंड)। इसका मतलब यह है कि एक नया गुब्बारा या बम हर आधे सेकंड में गिर जाएगा।
अब आप एमुलेटर में गेम चला सकते हैं।
यहाँ main.lua की पूरी लिस्टिंग है, इस गेम का पूरा प्रोजेक्ट सोर्स कोड यहाँ GitHub पर पाया जा सकता है।
-------------------------------------------------- --------------------------------------- - - गिरते गुब्बारे और बम का खेल - गैरी सिम्स द्वारा लिखित - ------------------------------------------- ---------------------------------------------- -- शुरू करें भौतिक विज्ञान इंजन स्थानीय भौतिकी = आवश्यकता ("भौतिकी") Phys.start () - आधी स्क्रीन चौड़ाई और ऊँचाई की गणना करें आधा w = display.contentWidth * 0.5 halfH = display.contentHeight * 0.5 - पृष्ठभूमि का निर्धारण स्थानीय bc = display.newImage ("night_sky.png", halfW, halfH) - स्कोर स्कोर = 0 स्कोरटैक्स = प्रदर्शन.न्यू टेक्सट (स्कोर, आधा डब्ल्यू, 10) - जब गुब्बारे को खिलाड़ी द्वारा टैप किया जाता है - 1 स्थानीय फ़ंक्शन के साथ स्कोर बढ़ाएं (गुब्बारा) घटना) अगर (Event.phase == "शुरू हुआ") तो रनटाइम: निष्कासन सूची ("एंटरफ़्रेम", ईवेंट.व्यू) event.target:removeSelf () स्कोर = स्कोर + 1 स्कोरटेक्स्ट = स्कोर समाप्ति समाप्ति - स्कोर एंड - कॉल किया गया जब बम खिलाड़ी द्वारा टेप किया जाता है - एक दंड स्थानीय फ़ंक्शन के रूप में आधा स्कोर बम (घटना) अगर (Event.phase ==) "शुरू हुआ") उसके बाद रनटाइम: निष्कासन सूची ("एंटरफ़्रेम", ईवेंट। स्वयं) ईवेंट .arget:removeSelf () स्कोर = math.floor (स्कोर * 0.5) स्कोरटैक्स.टेक्स्ट / स्कोर एंड एंड - डिलीट की गई वस्तुओं को हटा दें स्क्रीन के नीचे लोकल फंक्शन ऑफस्क्रीन (सेल्फ, ईवेंट) अगर (सेल्फ। = नील) तो फिर से खत्म हो जाता है अगर (सेल्फ। डिस्प्ले> कॉन्टेंटहाइट + 50) तो रनटाइम: रिमूइवेंटलिस्टनर ("एन्टरोमेन", सेल्फ) सेल्फ: रिमसेल्फ () अंतिम छोर - एक नया गिरने वाला गुब्बारा या बम स्थानीय फ़ंक्शन addNewBalloonOrBomb () - आप GitHub रेपो स्थानीय startX = math.random (display.contentWidth * 0.1, display.contentWidth) में red_ballon.png और bomb.png पा सकते हैं। * 0.9) अगर (math.random (1,5) == 1) तो - BOMB! स्थानीय बम = display.newImage ("bomb.png", startX; -300) Phys.addBody (बम) bomb.enterFrame = ऑफस्क्रीन रनटाइम: addEventListener ("enterFame", बम): addEventListener ("टच", बॉम्बॉचेड) - गुब्बारा स्थानीय गुब्बारा = display.newImage ("red_balloon.png", startX, -300) Phys.addBody (गुब्बारा) गुब्बारा।इंटरफ़्रेम = ऑफ़स्क्रीन रनटाइम: addventventListener ("enterFrame", गुब्बारा): AddEventListener ("स्पर्श" balloonTouched) end end - एक नया गुब्बारा या बम जोड़ें अब AddNewBalloonOrBomb () - हर 0.5 सेकंड के टाइमर में एक नया गुब्बारा या बम जोड़ते रहें ।performWithDelay (500, addNewalalloonOrBomb, 0)
अगला कदम
अगला कदम एक वास्तविक एंड्रॉइड डिवाइस पर गेम खेलना है। एक .apk फ़ाइल बनाने के लिए फ़ाइल-> Android के लिए बनाएँ ... और फ़ील्ड भरें। परिणाम एक .apk फ़ाइल होगी जिसे आप अपने डिवाइस पर कॉपी कर सकते हैं और फिर इंस्टॉल कर सकते हैं। आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपने अपने डिवाइस को अज्ञात स्रोतों से एप्लिकेशन की स्थापना की अनुमति देने के लिए कॉन्फ़िगर किया है। अमेज़ॅन के पास इस पर कुछ अच्छे दस्तावेज हैं क्योंकि आपको अमेज़न ऐपस्टोर स्थापित करने के लिए इसे सेट करने की भी आवश्यकता है। कोरोना में एंड्रॉइड डिवाइस पर अपने ऐप को साइन, बिल्ड और टेस्ट करने के तरीके के बारे में एक गाइड भी है।
गेम को सफलतापूर्वक आपके डिवाइस पर इंस्टॉल करने के साथ खेल को बेहतर बनाना है। उदाहरण के लिए, "पॉप" या "बैंग" ध्वनि को जोड़ने की कोशिश क्यों नहीं की जाती है, एक गुब्बारे या बम को टैप किया जाता है। कोरोना के लिए एक एपीआई है:media.playEventSound ().
या तीसरे प्रकार की वस्तु को जोड़ने की कोशिश क्यों नहीं की जाती है, एक सुपर बढ़ावा कहते हैं जो वर्तमान स्कोर को दोगुना करता है, या कुछ पृष्ठभूमि संगीत के बारे में कैसे?
लपेटें
कोरोना के साथ गेम लिखना काफी सीधा है क्योंकि एसडीके ओपनग्ल जैसी चीजों को संभालता है और इसमें एक अंतर्निर्मित 2D भौतिकी इंजन भी शामिल है। साथ ही लुआ को सीखना आसान है और प्रोग्रामिंग अनुभव के न्यूनतम के साथ किसी के लिए भी मुश्किल नहीं होना चाहिए। कोरोनलैब्स वेबसाइट में बहुत सारे दस्तावेज हैं जिनमें बहुत सारे गाइड और ट्यूटोरियल शामिल हैं।
कोड की 100 से कम लाइनों में हमारे पास एक काम करने वाला खेल है। ठीक है, यह कोई पुरस्कार जीतने वाला नहीं है, हालांकि यह कोरोना एसडीके की शक्ति और लचीलेपन को दर्शाता है।