2013-06-15 8 views
12

मैं वर्तमान में HTML5 < कैनवास > तत्व का उपयोग कर जावास्क्रिप्ट में एक 2 डी गेम लिख रहा हूं। यह बहुत अच्छी तरह से आ रहा है, लेकिन मैं एक समस्या में भाग गया है।एक अच्छा 2 डी ग्रिड-आधारित पथ-खोज एल्गोरिदम क्या है?

मेरे खेल के लिए स्तर का डिज़ाइन ग्रिड – में विभिन्न स्थानों पर कब्जा करने वाली विभिन्न बाधाओं के साथ एक ग्रिड (इसलिए एक सेल से उत्तर/दक्षिण/पूर्व/पश्चिम सेल में जाने वाली पथ लागत 1 है) एक भूलभुलैया की तरह, लेकिन बहुत अधिक विग्गल रूम के साथ। प्रत्येक व्यक्तिगत स्तर 400 × 200 कोशिकाओं के क्रम में है।

मैं एक ऐसे दुश्मन को लागू करने की कोशिश कर रहा हूं जो खिलाड़ी को चाहेगा चाहे वह चाहे चाहे, चाहे मुझे मेरी स्थिति में फिट करने के लिए विभिन्न पथ-खोज एल्गोरिदम का अनुवाद करने में समस्या हो रही है। मैं जिन लोगों में से आया हूं (जैसे ए * और डिजस्ट्रा) 3 डी या अधिक जटिल 2 डी स्थितियों के लिए सबसे उपयुक्त हैं। मैं सोच रहा था कि क्या मेरे उद्देश्यों के अनुरूप बेहतर ढंग से इन एल्गोरिदम को नाटकीय रूप से सरल बनाना संभव है, या यदि गहराई की पहली खोज की तरह कुछ स्तर स्तर के बाद एक अधिक कुशल विकल्प होगा।

+0

आप संभव पथों के बारे में कुछ प्रकार के पूर्व-ज्ञान के बिना ए * से बेहतर नहीं करेंगे (जैसे ज्ञात कनेक्टिविटी के साथ अपने मानचित्र को विभाजित करना)। गहराई पहले पहले चौड़ाई की तुलना में धीमी (बहुत अधिक) होगी। – Dave

+0

यह वास्तव में नहीं है कि स्टैक ओवरफ्लो/स्टैक एक्सचेंज क्या है; एक निश्चित सवाल के साथ एक प्रश्न पूछें, एक शॉपिंग सवाल नहीं। हर तरह से, लोगों द्वारा सुझाए गए सुझावों का उपयोग करें, लेकिन जब आप किसी प्रोग्रामिंग समस्या के साथ झगड़ा करते हैं तो वापस आएं। – Amelia

+0

@ डेव: ठीक है, आप आसानी से [सादे-ओल 'ए \ *] (http://programmers.stackexchange.com/questions/197894) से बेहतर पा सकते हैं जब ग्रिड को बाध्य किया जाता है; लेकिन, जेपीएस + ए \ * केवल एक \ * से अधिक जटिल है, और आमतौर पर आवश्यक नहीं है। –

उत्तर

14

ए * एक बहुत आम 2 डी पथदर्शी एल्गोरिदम है। यदि पथदर्शी अपरिचित है, तो यह आपके सिर को लपेटने में थोड़ा समय लग सकता है, लेकिन यह बहुत जटिल नहीं है। आप किसी और के उदाहरण कोड को देख सकते हैं जिसे आपके इरादे से अधिक जटिल एप्लिकेशन के लिए विकसित किया गया है। a good tutorial for understanding the algorithm here है।

+0

धन्यवाद, मैं इसे देख लूंगा। – creXALBO

+5

लिंक मर गया प्रतीत होता है। –

+0

यदि लिंक मरने लगता है ईमेलिंग का प्रयास करें: patrick (at) policyalmanac (dot) संगठन – Skrivener

2

EasyStar.js एक अच्छी लग रही लाइब्रेरी है जो आप जो करना चाहते हैं वह प्रतीत होता है। मैंने इसे स्वयं नहीं उपयोग किया है, लेकिन प्रोजेक्ट के जिथब पेज पर प्रलेखन बहुत अच्छा दिखता है, और शायद यह है कि मैं आपकी स्थिति में क्या चुनूँगा।

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