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