2d भूलभुलैया बनाने के लिए एल्गोरिथ्म [बंद]


27

सरल 2d भूलभुलैया उत्पन्न करने के लिए आपने अतीत में किस एल्गोरिथ्म का उपयोग किया है?

जवाबों:


21

माज़ बनाने के विभिन्न तरीके हैं। यहां उनकी और उनके विवरणों की एक विशाल सूची है: http://www.astrolog.org/labyrnth/algrithm.htm

मुझे लगता है कि मैंने "परफेक्ट" के तहत वर्णित एक का उपयोग किया।


बहुत अच्छा संसाधन, वास्तव में मैं क्या देख रहा था।
जदेसनो

उस साइट से प्यार करें, इसका इस्तेमाल कई साल पहले किया था।
19

8

मैं कसकर घावों को पसंद करता हूं जो क्रुस्कल के एल्गोरिथ्म बनाता है।

क्रुस्कल के एल्गोरिथ्म का मानक वर्णन अनुचित है कि यह स्थान समूहों से ग्राफ में स्थानों को भेद करने में विफल रहता है, जबकि डेटास्ट्रक्चर पसंद के बारे में एक वाक्य पर भरोसा करते हुए, उन अस्पष्टताओं का वर्णन करने के लिए अग्रणी है जो नौसिखियों को भ्रमित करते हैं। इसलिए मैं क्रुसकल की शब्दावली को अस्वीकार करता हूं।

मैं निम्नलिखित शब्दों का उपयोग करूंगा:

  • ग्राफ़
    • भूलभुलैया ही।
  • नोड
    • भूलभुलैया में एक स्थान। एक वर्ग भूलभुलैया पर, यह एक वर्ग सेल है।
  • धार
    • दो नोड्स के बीच कनेक्शन। एक वर्ग भूलभुलैया पर, यह 1-लंबाई वाला बार है।
  • वृक्ष समूह
    • नोड्स का एक सेट, जो खाली हो सकता है, एक पेड़ के रूप में व्यवस्थित होता है

और उन से, हम:

  1. एक समूह बनाएं GTG के लिए, ग्राफ़ ट्री समूह , पेड़ समूहों युक्त
  2. अपने भूलभुलैया में प्रत्येक स्थान के लिए एक नोड वाले एक पेड़ समूह के साथ GTG को आबाद करें
  3. एज सेट बनाएँ
  4. अपने भूलभुलैया में हर वैध धार के साथ आबाद करें
  5. जबकि GTG में एक से अधिक समूह है , और जबकि E खाली नहीं है:
  6. E से एक यादृच्छिक बढ़त rE चुनें
  7. आरई के एंडपॉइंट्स पी 1 और 2 की पहचान करें
  8. E से rE निकालें
  9. जांचें कि कौन से समूह p1 और P2 क्रमशः ( p1g और P2g ) से संबंधित हैं।
  10. यदि p1g और P2g अलग-अलग हैं, तो पेड़ समूह p1g और P2g को p1 -> P2 में शामिल करें , और एक पेड़ से दूसरे समूह के सभी समूह स्वामित्व को फिर से लिखें , जिससे पेड़ जुड़ते हैं।
  11. चरण 5 पर लौटें।
  12. यदि आपके पास कोई किनारा नहीं बचा है, लेकिन एक से अधिक पेड़ हैं, तो या तो ग्राफ जुड़ा नहीं है या बग नहीं है।
  13. यदि आपके पास सिर्फ एक पेड़ है, तो आपके पास पूरी तरह से लूप भूलभुलैया है।

1
हमारे पास एक GUI परियोजना थी और हमें GUI पर एक यादृच्छिक 2D भूलभुलैया का निर्माण करना था। यह ठीक यही है कि मैंने इसे कैसे किया और मुझे कभी भी एहसास नहीं हुआ कि मैं क्रुस्कल्स लोल का उपयोग कर रहा हूं। मुझे निश्चित रूप से एहसास हुआ कि मैंने एक ग्राफ का उपयोग किया था।
ब्रायन हैरिंगटन

1

विकिपीडिया में भूलभुलैया पीढ़ी पर एक महान संसाधन है । मैंने बड़े परिणामों के साथ यादृच्छिक प्रिज्म एल्गोरिथ्म का उपयोग किया है । विभाजन एल्गोरिथ्म दिलचस्प लग रहा है, लेकिन मैंने इसका इस्तेमाल कभी नहीं किया है।

यहाँ प्राइम के काम पर विकिपीडिया उदाहरण है।

विकिपीडिया की छवि


1

एक आसान तरीका उत्तर की दीवारों और पश्चिम की दीवारों की एक सूची बनाना है, फिर उन्हें अनुमति दें। प्रत्येक कमरे को एक नंबर दें। फिर सूची में से एक दीवार को उड़ा दें, जब तक कि दो कमरों में समान संख्या न हो, तब तक संख्याओं में से एक को एक ही संख्या के साथ अन्य सभी कमरों में प्रचारित करें। जब तक आप दीवारों से बाहर नहीं निकलते तब तक चलते रहें। यह आयताकार mazes या, वास्तव में, किसी भी अन्य भूलभुलैया के लिए काम करता है जहां आप "संभावित रूप से जुड़े कमरे" की एक सूची दे सकते हैं। इसके अलावा, यह कार्यक्रम के लिए बहुत सीधा है।


1

मैं Roguelike के विकास में उपयोग किए जाने वाले कुछ एल्गोरिदम पर भी एक नज़र डालूंगा। दुष्ट बेसिन में एक अच्छा प्रारंभिक संसाधन है


1

यहाँ एक अच्छा रन है, हालांकि यहाँ है: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-pazaz/

बुनियादी कदम थे:

  • कमरे रखें
  • खाली जगह को भूलभुलैया से भरें
  • कमरे को भूलभुलैया से कनेक्ट करें
  • डेड-एंड को तराश कर

यहाँ कोड: https://github.com/munprise/hauberk/blob/db360d9efa714efb6d937c31953ef849c7394a39/lib/src/content-dungeon.dart


0

आपने पूछा कि मैंने किसका उपयोग किया है, इसलिए मैं इसका उत्तर देना सुनिश्चित करूंगा। मैंने रूटबेसर गेम्स पर अपने भूलभुलैया गेम में रिकर्सिव बैकट्रैकर एल्गोरिथम का उपयोग किया ।

यह सबूत है कि मैंने एल्गोरिथ्म का उपयोग किया है, कृपया इसे मेरे काम के विज्ञापन के रूप में न देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.