माउस और कीबोर्ड इनपुट Gosu में

खेल, परिभाषा के अनुसार, इंटरैक्टिव हैं। गोसु कुंजी और माउस बटन प्रेस का पता लगाने और प्रतिक्रिया करने के लिए एक सरल इंटरफ़ेस के साथ इस बातचीत को सीधा बनाता है।

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

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

प्रत्येक कीबोर्ड कुंजी के लिए, एक है गोसु:: Kb * लगातार। अधिकांश कुंजियों के लिए, इन स्थिरांक का नाम आसानी से अनुमान लगाया जाता है। उदाहरण के लिए, तीर कुंजियाँ हैं गोसु:: KbLeft, गोसु:: KbRight, गोसु:: KbUp तथा गोसु:: KbDown. पूरी सूची के लिए, देखें गोसु मॉड्यूल के लिए प्रलेखन.

instagram viewer

इनपुट घटनाओं को दिया जाता है गोसु:: खिड़की उदाहरण। मुख्य लूप में, पहले अपडेट करें कहा जाता है, गोसु सभी बटन के लिए घटनाओं को वितरित करेगा जो या तो दबाए गए हैं या जारी किए गए हैं। यह कॉल करके ऐसा करता है बटन लगाओ तथा बटन लगाना तरीकों, कुंजी या बटन की आईडी को पारित करने के लिए दबाया।

में बटन लगाओ तथा बटन लगाना विधियाँ, आप अक्सर पाते हैं मामला बयान। यह, बहुत कार्य के साथ, यह तय करने के लिए एक बहुत ही सुरुचिपूर्ण और अभिव्यंजक तरीका प्रदान करता है कि किस बटन को दबाया गया या जारी किया गया। निम्नलिखित एक क्या है का एक छोटा उदाहरण है बटन लगाओ तरीका जैसा दिख सकता है। इसे अपने में रखा जाना चाहिए गोसु:: खिड़की उपवर्ग, और विंडो को बंद कर देगा (प्रोग्राम को समाप्त करते हुए) जब पलायन कुंजी दबाया जाता है।

आसान है, है ना? इसका विस्तार करते हैं। यहां है खिलाड़ी कक्षा। यह बाईं और दाईं ओर ले जा सकता है यदि बाईं और दाईं कुंजी दबाए जाते हैं। ध्यान दें कि इस वर्ग में भी है बटन लगाओ तथा बटन लगाना तरीकों। वे एक से तरीकों की तरह काम करते हैं गोसु:: खिड़की उपवर्ग। Gosu के बारे में कुछ भी पता नहीं है खिलाड़ी हालाँकि, हम बुला रहे हैं खिलाड़ीके तरीके मैन्युअल रूप से गोसु:: खिड़कीके तरीके। एक पूर्ण, चल उदाहरण मिल सकता है यहाँ.

यदि ईवेंट-आधारित इनपुट आपकी शैली नहीं है, तो आप किसी को भी क्वेरी कर सकते हैं गोसु:: खिड़की यह देखने के लिए कि क्या कोई बटन या कुंजी किसी भी समय दबाया गया है। आप नजरअंदाज कर सकते हैं बटन लगाओ तथा बटन लगाना कॉलबैक पूरी तरह से।

क्वेरी करने के लिए गोसु:: खिड़की यह देखने के लिए कि क्या कोई कुंजी दबाया गया है, कॉल करें बटन लगाओ? बटन की आईडी के साथ विधि जिसे आप जांचना चाहते हैं। इस कॉल में प्रश्न चिह्न न भूलें! अगर तुम बुलाओ बटन_डाउन (गोसु:: KbLeft), आप होगें रिपोर्टिंग बटन दबाएं गोसु:: खिड़की उपवर्ग। यहां तक ​​कि अगर आपके पास कोई कॉलबैक विधि परिभाषित नहीं है, तो मूल वर्ग, गोसु:: खिड़की मर्जी। कोई त्रुटि नहीं होगी, यह सिर्फ आपकी अपेक्षा के अनुरूप काम नहीं करेगा। बस उस सवालिया निशान को मत भूलना!

यहाँ है खिलाड़ी वर्ग का उपयोग करने के लिए फिर से लिखा बटन लगाओ? घटनाओं के बजाय। एक पूर्ण, चल उदाहरण उपलब्ध है यहाँ. इस समय, इनपुट की शुरुआत के लिए जाँच की जाती है अपडेट करें तरीका। आप यह भी देखेंगे कि यह उदाहरण छोटा है, लेकिन मेरी राय में, कम सुरुचिपूर्ण है।

माउस बटन को कीबोर्ड और गेमपैड बटन की तरह ही हैंडल किया जाता है। आप इन दोनों के साथ क्वेरी कर सकते हैं बटन लगाओ? और घटनाओं के साथ बटन लगाओ तथा बटन लगाना. हालाँकि, माउस की गति को केवल हल किया जा सकता है, माउस आंदोलन के लिए कोई ईवेंट नहीं हैं। गोसु:: खिड़कीकी mouse_x तथा mouse_y तरीके माउस पॉइंटर के X और Y निर्देशांक प्रदान करते हैं।

ध्यान दें कि X और Y निर्देशांक गेम विंडो के सापेक्ष हैं। इसलिए, उदाहरण के लिए, यदि माउस शीर्ष बाएं कोने पर है, तो यह समन्वय के पास होगा (0,0). इसके अलावा, अगर माउस पॉइंटर है बाहर पूरी तरह से गेम विंडो में, यह अभी भी रिपोर्ट करेगा कि पॉइंटर खिड़की के सापेक्ष कहां है। तो दोनों mouse_x तथा mouse_y शून्य से कम और खिड़की की चौड़ाई या ऊंचाई से अधिक हो सकता है।

जब भी आप माउस पर क्लिक करेंगे, निम्नलिखित प्रोग्राम एक नया स्प्राइट प्रदर्शित करेगा। ध्यान दें कि यह इवेंट-संचालित इनपुट (क्लिक के लिए) और क्वेरी-चालित इनपुट (माउस की स्थिति प्राप्त करने के लिए) दोनों का उपयोग करता है। एक पूर्ण, रन करने योग्य फ़ाइल उपलब्ध है यहाँ.