एक अच्छा या बुरा डिज़ाइन स्वयं को प्रकट करता है कि यह अप्रत्याशित आवश्यकताओं को कितनी अच्छी तरह से समायोजित करता है, इसलिए मैं सुझाव दूंगा आपके डिजाइन रिफ्लेक्सन को सूचित करने के लिए संभावित "गेम फीचर्स" का एक स्टॉक आसान है। चूंकि आप इसे एक लर्निंग प्रोजेक्ट के रूप में कर रहे हैं, इसलिए आप पागल हो सकते हैं।
Arkanoid इसके लिए बहुत अच्छा विकल्प है, यह कई विकल्प प्रदान करता है। विभिन्न ईंटों को अंक की विभिन्न मात्रा स्कोर करें। कुछ ईंटें हिट करते समय अन्य ईंटों के स्कोर को बदलें। कुछ ईंटों को कई हिट की आवश्यकता है। गेंद, पैडल, या ईंटों को महाशक्तियां दें। इन शक्तियों को रोकें: उनमें से एक गेंद को कीबोर्ड-नियंत्रणीय बनाता है, दूसरा इसे पारदर्शी बनाता है, दूसरा "गुरुत्वाकर्षण" को उलट देता है, और इसी तरह। ईंटें वस्तुओं को छोड़ दें।
लक्ष्य यह है कि जब आप ऐसा परिवर्तन करते हैं, तो यह कक्षाओं और विधियों की न्यूनतम संभव संख्या को प्रभावित करता है। इस मानदंड को फिट करने के लिए आपके डिज़ाइन को कैसे बदलना चाहिए इसके बारे में एक महसूस करें।
एक आईडीई का उपयोग करें जिसमें रिफैक्टरिंग मेनू है, विशेष रूप से चाल विधि रीफैक्टरिंग।(यदि आपने नहीं किया है, तो Refactoring पुस्तक पढ़ें।) यहां और वहां अपनी विभिन्न विधियों को रखने के साथ प्रयोग करें। ध्यान दें कि विधि को "गलत" कब रखा जाता है, और जब आप इसे कहीं और स्थानांतरित करते हैं तो क्या आसान हो जाता है। जब वस्तुएं अपने राज्य की देखभाल करती हैं तो तरीके सही तरीके से रखे जाते हैं; आप किसी वस्तु को अपने राज्य के बारे में प्रश्न पूछने के बजाय "कुछ" करने के लिए "बताएं" और फिर उसके उत्तरों के आधार पर निर्णय ले सकते हैं।
मान लीजिए कि आपके डिजाइन में प्रत्येक स्प्राइट एक ऑब्जेक्ट उदाहरण है। (आप अन्य रणनीतियों का चयन कर सकते हैं।) आम तौर पर, गति एक स्प्राइट की स्थिति को बदल देती है, इसलिए एक विशेष प्रकार के स्प्राइट के लिए गति का वर्णन करने वाली विधि शायद उस स्प्राइट की कक्षा पर निर्भर करती है।
टकराव का पता लगाने का एक संवेदनशील हिस्सा कोड है, क्योंकि इसमें संभावित रूप से sprites के सभी संभावित जोड़े की जांच करना शामिल है। आप टकराव के लिए की जांच करना चाहते हैं और टकराव की वस्तुओं को सूचित करना चाहते हैं। उदाहरण के लिए, आपकी गेंद वस्तु को पैडल के साथ टकराने पर अपनी गति को बदलने की जरूरत है। लेकिन सामान्य रूप से टकराव का पता लगाने के लिए एल्गोरिदम गेंद वर्ग पर नहीं होगा, क्योंकि वस्तुओं के अन्य जोड़े खेल के लिए महत्वपूर्ण परिणामों के साथ टकरा सकते हैं।
और इसी तरह ...
मुझे लगता है कि मैं इनमें से कुछ को समझता हूं, जैसे पहले: चूंकि स्कोरकीपिंग ऑब्जेक्ट सभी स्कोर स्थिति रखता है, इसलिए इसमें स्कोर को संशोधित करने के तरीके भी हो सकते हैं। मुझे 1.1 समझ में नहीं आता है, हालांकि: चूंकि प्रत्येक कॉलिशन बोर्ड के भीतर होता है, इसलिए मुझे बोर्ड.collides (गेंद, गोल 1) होना चाहिए? – Tordek
@ [टॉर्डेक]: हाँ - वास्तव में आपके पास बोर्ड होगा। चेककॉलिज़न (ऑल ऑब्जेक्ट्स), सभी गेंदों और लक्ष्यों और सक्रिय गेम स्कोप में किसी भी अन्य टकराव योग्य वस्तु के बीच टक्कर की जांच करने के लिए। टक्कर परीक्षण के लिए MovingObjects एक्स CollidableObjects का उपयोग करें, और एक त्वरित परीक्षण के लिए बाध्य आयत की जांच करें। –