मैं एक वर्ग ग्रिड पर 2 डी mazes के लिए कुछ समय पहले एक एल्गोरिथ्म के लिए बनाया गया है, वहाँ कोई कारण नहीं क्यों यह भी एक घन ग्रिड पर एक 3 डी भूलभुलैया के लिए नहीं काम करना चाहिए है।
एक 3 डी ग्रिड के साथ शुरू शुरू में पूरी तरह से दीवार कोशिकाओं के साथ आबादी।
...
प्रारंभ ग्रिड के एक छोर पर एक एजेंट, एजेंट एक्स में एक सीधी रेखा में गमन, वाई, जेड, -X, -Y या -Z दिशा समाशोधन दीवार के रूप में वह यात्रा करता है ।
एक्शन 'एन' में प्रत्येक चरण होने का एक छोटा सा मौका है।
एक्शन 'एम' तब होता है जब एजेंट सीधे एजेंट के सामने होता है और उसके सामने वाला सेल खाली होता है।
'एन' के एक यादृच्छिक पसंद है:
- कि एजेंट को हटाने
- बाईं या दाईं ओर 90 डिग्री
- मोड़ और बनाने में एक ही वर्ग पर एक एजेंट, 90 डिग्री छोड़ दिया सही है या दोनों (दो एजेंट)।
- कि एजेंट
- को हटाने कि एजेंट के सामने दीवार को हटाने और फिर उस एजेंट
- को हटाने:
'एम' के एक यादृच्छिक विकल्प है और कुछ भी नहीं कर रहा है,
- को बाएं या दाएं 90 डिग्री मोड़ना।
- और उसी वर्ग पर एक एजेंट बनाने से 9 0 डिग्री बाएं, दाएं या दोनों (दो एजेंट) बने।
mazes के विशिष्ट हैं, और उनके चरित्र अत्यधिक 'एम' (मान्य जंक्शनों से कोई लेना देना) के लिए है और यह भी होने वाली 8 करने के लिए 1 के अवसरों को समायोजन करके ट्रिगर का समायोजन करके लचीला है। आप एक या दो क्रियाएं हटाना चाहते हैं, या अपने स्वयं के कार्यों को पेश करना चाहते हैं, उदाहरण के लिए एक छोटे से समाशोधन या एक कदम को दूर करने के लिए।
'एन' के लिए ट्रिगर भी एक और प्रकार की यादृच्छिकता हो सकता है, उदाहरण के लिए नीचे दिया गया उदाहरण काफी शाखाई मैज बनाने के लिए उपयोग किया जा सकता है, जो अभी भी कुछ लंबे सीधे हिस्से हैं।
float n = 1;
while (random_0_to_1 > 0.15)
{
n *= 1.2;
}
return (int)n;
कुछ छोटे समायोजन कार्रवाई 'एम' के लिए उदाहरण के ट्रिगर के लिए, मेरे सरल वर्णन से की आवश्यकता होगी कोशिकाओं यह रूप में अच्छी तरह जंक्शनों किस तरह कर रहे हैं पर निर्भर करता है की जाँच करता है करने के लिए आसन्न जाँच करने की आवश्यकता होगी वांछित।
भूलभुलैया के चक्र के लिए या तो 5 या 6 की आवश्यकता होती है और भूलभुलैया के लिए कम से कम एक विकल्प 'एम' कार्रवाई 5 और 6 की आवश्यकता होती है।
संभावनाओं/कार्यों और 'एम' ट्रिगर्स के कुछ विकल्प मैज बनाने वाले होते हैं जो काम नहीं करते हैं, उदाहरण के लिए अनावश्यक या खाली या दीवार कोशिकाओं से भरा है, लेकिन कई लगातार अच्छे परिणाम उत्पन्न करेंगे।
क्या आप चाहते हैं कि _solves_ एक भूलभुलैया, या _generates_ एक भूलभुलैया? –
@ एक्स-शून्य इसे उत्पन्न करता है। – jmasterx
आप एक ग्रिड पर 2 डी भूलभुलैया बना सकते हैं और इसे 3 डी बनाने के लिए प्रत्येक ग्रिड सेल "ऊंचाई" – danca