मैं वर्तमान में HTML5 < कैनवास > तत्व का उपयोग कर जावास्क्रिप्ट में एक 2 डी गेम लिख रहा हूं। यह बहुत अच्छी तरह से आ रहा है, लेकिन मैं एक समस्या में भाग गया है।एक अच्छा 2 डी ग्रिड-आधारित पथ-खोज एल्गोरिदम क्या है?
मेरे खेल के लिए स्तर का डिज़ाइन ग्रिड – में विभिन्न स्थानों पर कब्जा करने वाली विभिन्न बाधाओं के साथ एक ग्रिड (इसलिए एक सेल से उत्तर/दक्षिण/पूर्व/पश्चिम सेल में जाने वाली पथ लागत 1 है) एक भूलभुलैया की तरह, लेकिन बहुत अधिक विग्गल रूम के साथ। प्रत्येक व्यक्तिगत स्तर 400 × 200 कोशिकाओं के क्रम में है।
मैं एक ऐसे दुश्मन को लागू करने की कोशिश कर रहा हूं जो खिलाड़ी को चाहेगा चाहे वह चाहे चाहे, चाहे मुझे मेरी स्थिति में फिट करने के लिए विभिन्न पथ-खोज एल्गोरिदम का अनुवाद करने में समस्या हो रही है। मैं जिन लोगों में से आया हूं (जैसे ए * और डिजस्ट्रा) 3 डी या अधिक जटिल 2 डी स्थितियों के लिए सबसे उपयुक्त हैं। मैं सोच रहा था कि क्या मेरे उद्देश्यों के अनुरूप बेहतर ढंग से इन एल्गोरिदम को नाटकीय रूप से सरल बनाना संभव है, या यदि गहराई की पहली खोज की तरह कुछ स्तर स्तर के बाद एक अधिक कुशल विकल्प होगा।
आप संभव पथों के बारे में कुछ प्रकार के पूर्व-ज्ञान के बिना ए * से बेहतर नहीं करेंगे (जैसे ज्ञात कनेक्टिविटी के साथ अपने मानचित्र को विभाजित करना)। गहराई पहले पहले चौड़ाई की तुलना में धीमी (बहुत अधिक) होगी। – Dave
यह वास्तव में नहीं है कि स्टैक ओवरफ्लो/स्टैक एक्सचेंज क्या है; एक निश्चित सवाल के साथ एक प्रश्न पूछें, एक शॉपिंग सवाल नहीं। हर तरह से, लोगों द्वारा सुझाए गए सुझावों का उपयोग करें, लेकिन जब आप किसी प्रोग्रामिंग समस्या के साथ झगड़ा करते हैं तो वापस आएं। – Amelia
@ डेव: ठीक है, आप आसानी से [सादे-ओल 'ए \ *] (http://programmers.stackexchange.com/questions/197894) से बेहतर पा सकते हैं जब ग्रिड को बाध्य किया जाता है; लेकिन, जेपीएस + ए \ * केवल एक \ * से अधिक जटिल है, और आमतौर पर आवश्यक नहीं है। –