2009-04-09 24 views
10

मैं वर्तमान में Theme Hospital के विचार के आधार पर एक बहुत ही मूल जावा गेम लिख रहा हूं।पथदर्शी 2 डी जावा गेम?

मैं जावा के लिए काफी नया हूं और वर्तमान में विश्वविद्यालय में अपने पहले वर्ष में पढ़ रहा हूं। मैंने जावा को लगभग दो वर्षों से चालू और बंद कर दिया है, लेकिन अंततः मैं एक सभ्य परियोजना के लिए अपना समय समर्पित कर रहा हूं।

मैं उस चरण में हूं जहां मुझे अस्पताल में भर्ती होने के लिए एक व्यक्ति (रोगी) बनाने की आवश्यकता है। उन्हें रिसेप्शन डेस्क, फिर जीपी के कार्यालय में जाना होगा, और फिर अपनी शुरुआती स्थिति में वापस जाना होगा।

मैंने ए * पथ खोज में देखा है, लेकिन यह वास्तव में मेरे लिए जटिल लगता है। मैं समझता हूं कि यह कैसे काम करता है मुझे लगता है, लेकिन मुझे यकीन है कि इसे मेरे खेल में कैसे कार्यान्वित किया जाए।

अब तक, उपयोगकर्ता एक स्वागत डेस्क रख सकता है, और एक जीपी कार्यालय बना सकता है। इनमें से प्रत्येक में "उपयोग का बिंदु" होता है जो रोगी को प्राप्त करने की जगह होगी। ग्रिड वर्ग केवल पूर्ण हो सकते हैं या नहीं, कोई अलग इलाका नहीं होगा।

मुझे अभी तक कोई कोड पेस्ट करने में संकोच नहीं है, क्योंकि यह गड़बड़ है क्योंकि मैंने पिछले कुछ महीनों में जीयूआई के साथ बहुत सी नई तकनीकें सीख ली हैं। मेरी योजना मील का पत्थर 1 प्राप्त करना है, जिससे रोगी डेस्क पर जाता है और फिर कार्यालय छोड़ देता है। एक बार मेरे पास यह हो जाने के बाद, मैं कोड को और अधिक साफ कर दूंगा।

मैंने ए * और कई अलग-अलग प्रकार के कई कार्यान्वयन देखा है। क्या कोई मुझे एक शुरुआती बिंदु दे सकता है जिसके साथ मैं काम कर सकता हूं? क्या मुझे कक्षाओं के पहले से लिखे गए सेट को आजमाने और अनुकूलित करना चाहिए, या स्क्रैच से अपना खुद का लिखने का प्रयास करना चाहिए?

+0

ए * कार्यान्वयन के लिंक के लिए मेरी पोस्ट देखें। – TofuBeer

उत्तर

6

आप ए * चाहते हैं, यह ग्रिड आधारित पथदर्शी के लिए इष्टतम कार्यान्वयन है।

इससे आपको यह पता मदद कर सकता है:

http://www.cokeandcode.com/main/tutorials/path-finding/

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

+0

आह हाँ, मैंने इस महीने पहले पाया था जब पहली बार मेरे गेम विचार के लिए सामान खोज रहा था। मैं इसे पढ़ूंगा, देख सकता हूं कि यह मदद करता है या नहीं। धन्यवाद :) – Relequestual

4

पुस्तक AI for Game Developers पुस्तक ए * का एक बहुत अच्छा स्पष्टीकरण है। मैं वास्तव में आज एक कार्यान्वयन लिखने जा रहा था ... अगर मैं करता हूं तो मैं कोड को यहां फेंक दूंगा।

कोड किया गया है, यह यहां बहुत बड़ा है, ताकि आप इसे यहां से पकड़ सकें: https://chaos.bcit.ca/svn/public/astar/ (स्वयं हस्ताक्षरित प्रमाण पत्र, लेकिन सर्वर कुछ भी बुरा नहीं करता है)।

मैंने अधिकांश भाग के लिए पुस्तक में छद्म कोड का पालन किया, लेकिन मैंने ए * के लिए अब तक जो भी देखा है उससे सबकुछ अधिक ऑब्जेक्ट उन्मुख बना दिया।

आपके पास एक भूलभुलैया है जिसमें टाइल्स शामिल हैं। प्रत्येक टाइल में एक स्थान और बाधा होती है (यदि कोई बाधा नहीं है तो शून्य)।

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

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

कोड एलजीपीएल के तहत लाइसेंस है, इसलिए यदि आप परिवर्तन करते हैं और ऐप वितरित करते हैं तो आपको परिवर्तन उपलब्ध कराएंगे। लाइसेंस टिप्पणी में ईमेल पते पर बग रिपोर्ट/फिक्स भेजने के लिए स्वतंत्र महसूस करें (प्रत्येक शीर्षलेख में पाया गया)।

परीक्षाओं के बाद मैं इसे कभी टिप्पणी करने के लिए चारों ओर नहीं जाऊंगा, लेकिन मुझे लगता है कि यह काफी सीधे आगे है।

+0

वाह मुझे एसओ, बहुत तेज प्रतिक्रिया पसंद है। धन्यवाद, अगर आपने किया तो यह शानदार होगा। यदि मैंने आपके कार्यान्वयन का उपयोग किया है, तो मैं निश्चित रूप से आपको पूर्ण क्रेडिट दूंगा! – Relequestual

+0

कोई चिंता नहीं (केवल कुछ पूर्व छात्र यहां मेरे असली नाम को जानते हैं :-) – TofuBeer

+1

जब तक आप कुछ दिलचस्प, व्यापक या शांत पोस्ट करते हैं, तो आपको तेज़ प्रतिक्रिया मिल जाएगी। उन क्षेत्रों में सटीक तकनीकी प्रश्न जिनके बारे में बहुत से लोगों को अनुभव नहीं है, या कुछ विवरणों के साथ बुरी तरह से लिखित प्रश्न हैं और आप SO के शांत पक्ष को देखेंगे। :) –

2

स्वाभाविक रूप से यदि आप अपना स्वयं का कार्यान्वयन लिखते हैं तो आप पथदर्शी के बारे में बहुत कुछ सीखेंगे। लेकिन आप इसे करने में काफी समय व्यतीत करेंगे।

JGraphT लाइब्रेरी देखें जो सामान्य रूप से ग्राफ से संबंधित है, एक अच्छा एपीआई है और 0 *केवल ए * की तुलना में सबसे कम पथ एल्गोरिदम का समर्थन करता है।

+0

जेजीआरटीटी लिंक के लिए धन्यवाद। –

5

यह सबसे जानकारीपूर्ण pathfinding पोस्ट मैं तारीख को देखा है है: http://www.ai-blog.net/archives/000152.html

+1

कूल आलेख, धन्यवाद। –

+0

लिंक नीचे है। – Laurent

+1

लिंक (प्रभावी रूप से) टूटा हुआ है। यह उस साइट के मुख्य पृष्ठ पर रीडायरेक्ट करता है। –

0

शायद तुम मिल गया है कि तुम क्या चाहते थे, लेकिन यहां एक * pathfinding का एक अच्छा विवरण के साथ एक लिंक है। मुझे C++ में अपने गेम के लिए ए * को कार्यान्वित करना पड़ा, और इससे मुझे यह समझने में बहुत मदद मिली कि यह कैसे काम करता है।

http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm

+0

लिंक (प्रभावी रूप से) टूटा हुआ है: * आपको इस सर्वर पर /~csc245/teaching/CS1015/practicals/aStarTutorial.htm तक पहुंचने की अनुमति नहीं है। * –

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