2012-09-01 8 views
10

हैलो मैं एक यादृच्छिक pacman भूलभुलैया उत्पन्न करने के लिए एक एल्गोरिदम पर काम कर रहा है। मैंने कुछ लेख देखे हैं लेकिन तर्क को तोड़ नहीं सकते। मैं भूलभुलैया एल्गोरिदम गहराई पहली खोज का उपयोग कर रहा हूं और फिर मैं प्रत्येक भूलभुलैया सममित बनाने के लिए भूलभुलैया दर्पण करता हूं। मैं मृत सिरों की सफाई जैसे मुद्दों में भाग रहा हूं। यदि यह संभव नहीं है तो मैं यादृच्छिक भूलभुलैया उत्पन्न करने के लिए किसी का अपना तर्क होने पर भी एक और एल्गोरिदम का प्रयास करूंगा। किसी भी मदद की सराहना की है। धन्यवादएक यादृच्छिक pacman भूलभुलैया कैसे बनाएँ

+0

"पॅकमैन भूलभुलैया" का क्या मतलब है? –

+0

मैं अपना खुद का पॅकमैन क्लोन बनाने का प्रयास कर रहा हूं और मैं इस तस्वीर के समान "पॅकमैन भूलभुलैया" बनाना चाहता हूं http://ryangenno.tripod.com/images/MSpacmaze4.gif। मैं इसे यादृच्छिक –

+1

पर उत्पन्न करना चाहता हूं, मुझे पता है कि यह एक पुराना सवाल है, लेकिन यदि आपको समस्याएं आ रही हैं तो इस साइट को देखें, इससे मुझे एक टन मदद मिली। http://www.contralogic.com/2d-pac-man-style-maze-generation/ – user1762507

उत्तर

2

मैं स्वच्छ क्षेत्र (किसी भी दीवार के बिना, 0 के एन * एन मैट्रिक्स में) में डीएफएस द्वारा यादृच्छिक चलने की पेशकश करता हूं, उसके बाद उन क्षेत्रों को भरें जो यादृच्छिक चलने से ढके नहीं हैं (उन्हें दीवार), यह भी अप्रयुक्त रिक्त स्थान का कारण बन सकता है, लेकिन यह गारंटी लंबे समय तक चलने की गारंटी देती है। आप मनमाने ढंग से चलने का आकार निर्धारित कर सकते हैं (उदाहरण के लिए जब आपका चलने का आकार (एन^2)/2 तक पहुंचा, तो आप चलना बंद कर सकते हैं)।

4

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

2

मैंने बहुत समय पहले सी = 64 पर एक यादृच्छिक PacMan भूलभुलैया जनरेटर बनाया था, जो गहराई से पहले और मृत अंत के उन्मूलन का उपयोग कर रहा था, लेकिन हाल ही में मेरे दोस्त ने इसे फिर से करने के लिए चुनौती दी। एक बेहतर तरीका मिला। इसे my site

अनिवार्य रूप से, मैंने प्रत्येक दिशा के साथ कमरे का ग्रिड बनाया है जिसमें खुली दरवाजा है (सुरंग पर छोड़कर सीमा पर बंद), फिर नियम के अनुसार यादृच्छिक रूप से दरवाजे बंद करना शुरू करें कि वहां कभी नहीं होना चाहिए 2 दरवाजे बंद होने पर एक आसन्न कमरे में 1 से अधिक बंद दरवाजे बनें, तीसरा व्यक्ति मृत अंत का निर्माण करेगा। बस इसे यादृच्छिक रूप से तब तक जारी रखें जब तक कि सभी संभावित दरवाजे या तो नियम द्वारा बंद या खुले न हों।

मिररिंग में कुछ अधिक परिश्रम था, लेकिन मैं मूल बातें के साथ शुरू किया और बस मिरर, भूत घर स्थान, न्यूनतम दीवार की लंबाई (कोई भी घिरी सर्कल) और अधिकतम दीवार की लंबाई, आदि के लिए अनुमति देने के लिए नियमों को बनाया ...

+0

स्पष्ट रूप से, आपने एक अलग उपयोगकर्ता खाते का उपयोग करके अपना उत्तर अपडेट करने का प्रयास किया, और [सुझाए गए संपादन] (http: // stackoverflow। कॉम/समीक्षा/सुझाए गए संपादन/1287465) को खारिज कर दिया गया था। अपने मूल खाते का उपयोग क्यों नहीं कर रहे हैं? – bfavaretto

+0

लिंक अब मर चुका है – Valdrinit

संबंधित मुद्दे