बाधाओं के चारों ओर घूमना / टालना


12

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

मैं कंप्यूटर "नियंत्रित" खिलाड़ी के लिए एक "चिकनी" पथ कैसे बना सकता हूं?
संपादित करें: चिकनाई मुख्य बिंदु नहीं है, लेकिन लाल अवरुद्ध "दीवार" से बचने के लिए और इसमें दुर्घटना न करने और फिर इससे बचने के लिए।

अगर मैं मूल रूप से 3 अंक रखता हूं तो मैं एल्गोरिथ्म खोजने के कुछ रास्ते कैसे लागू कर सकता हूं?
(और क्या यह चीजों को और अधिक जटिल बना देगा, यदि आप कई बाधाएं डाल सकते हैं?)
चिकना रास्ता

जवाबों:


9

एक बहुत ही सामान्य और सामान्य दृष्टिकोण आपके विश्व स्थान को ग्रिड में विभाजित करना और ए * जैसे एल्गोरिदम का उपयोग करना है।

इस लिंक ने मुझे ए * एल्गोरिथ्म को समझने और लागू करने में मदद की।

संपादित करें :

एक सरल विचार जो मेरे दिमाग में आता है वह है ... एक बार जब आप दुनिया को ग्रिड-सेल में ले लेते हैं। हमेशा, ब्लैक डॉट को मैनहट्टन से ग्रीन डॉट तक फॉलो करना चाहिए। फिर, आप प्रत्येक सेल को वेट असाइन कर सकते हैं। ग्रिड-सेल पर बाधाओं का वजन अधिक हो सकता है और फ्री-टू-मूव में 0 वजन हो सकता है (कहने दें)। जैसा कि आप मैनहट्टन दूरी के साथ चलते हैं, प्रत्येक चाल के लिए, यह देखने के लिए जांचें कि क्या अगले सेल का वजन वर्तमान सेल के वजन से अधिक नहीं है। यदि यह अधिक है, तो आसन्न सेल के वजन की जांच करें और फिर आगे बढ़ें।

उम्मीद है की यह मदद करेगा


यह ए * एल्गोरिथ्म लेख मुझे लगता है कि मैं क्या देख रहा था, लेकिन दुर्भाग्य से मुझे अभी भी नहीं पता है कि कैसे "दुनिया" को ग्रिड में विभाजित करना है: एस
उपयोगकर्ता

यह वास्तव में निर्भर करता है। विचार: अपनी दुनिया को 32 x 32 के ग्रिड में विभाजित करें जो तब 2 डी सरणी में पदों का प्रतिनिधित्व करेगा। उदाहरण के लिए, आपके मामले में: लाल बिंदु 120, 120 पिक्सेल (या 120/32 x 120/32: 3.75 x 3.75) 3.75 x 3.75 पर है जो आपके विश्व-ग्रिड (या 2D सरणी) की स्थिति का प्रतिनिधित्व करता है। चूंकि सरणियों को पूर्णांकों द्वारा अनुक्रमित किया जाता है, आप केवल इसका पूर्णांक भाग चाहते हैं। इस प्रकार, लाल बिंदु 3 x 3 पर होगा। आशा है कि यह मदद करता है
brainydexter

18

स्टीयरिंग व्यवहार बहुत सटीक समस्या सेट के लिए डिज़ाइन किए गए हैं।

http://www.red3d.com/cwr/steer/

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


स्टीयरिंग व्यवहार इसके लिए एकदम सही हैं।
दस

2

कोशिश करने के लिए एक आसान बात यह है कि एक अदृश्य डॉट है जो ब्लैक डॉट के आगे जाता है और आपकी पहली छवि में पथ निष्पादित करता है। काली बिंदी पीछे की थोड़ी दूरी पर अदृश्य बिंदी का अनुसरण करती है।
मैंने इस काम को अच्छे परिणामों के साथ देखा है लेकिन निश्चित रूप से आपकी आवश्यकताओं के अनुरूप नहीं हो सकता है।

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