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