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