पथ एक जावा 2 डी खेल में खोजने?

वोट
6

अनिवार्य रूप से अपने एक pacman क्लोन खेल मैं पर काम कर रहा हूँ। मैं एक शत्रु वर्ग है, और इस श्रेणी का निर्माण के 4 उदाहरण हैं जिनमें सभी खेल के 4 भूत का प्रतिनिधित्व किया है।

सभी भूत स्क्रीन के यादृच्छिक क्षेत्रों में शुरू और फिर वे pacman चरित्र की दिशा में काम करना है। खिलाड़ी pacman को नियंत्रित करता है, यह चारों ओर घूमते रहते हैं, वे इसे का पालन करें और उसके प्रति निकटतम संभव तरीके से लेना चाहिए।

कोई उलझन / बाधाओं (अभी तक) तो संपूर्ण नक्शा (400x400 पिक्सल) उन्हें खुले मैदान है।

खिलाड़ी और प्रत्येक भूत के लिए, मैं पहला, दूसरा, छवि चौड़ाई प्राप्त कर सकते हैं और ऊंचाई जिम्मेदार बताते हैं। इसके अलावा, मैं पहले से ही एक टक्कर पता लगाने एल्गोरिथ्म ताकि के बारे में चिंतित नहीं हैं, बस pacman के लिए अपने रास्ते खोजने भूत के बारे में है।

08/03/2009 को 06:14
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


7 जवाब

वोट
0

आप शुरू कर सकता है एक * (ए स्टार) को देख

और यहाँ एक पृष्ठ है कि अन्य मार्ग खोजने एल्गोरिदम के संबंध हैं।

[संपादित करें] गाह ... मस्तिष्क बहुत धीमी है ... इस पुस्तक के बारे में भूल गया, यह सी या C ++ है (मैं जो भूल जाते हैं), लेकिन आप अभी भी जावा के लिए अवधारणाओं मिल सकती है। यह आपको पढ़ने के लिए सबसे आसान नहीं हो सकता है, लेकिन कुल मिलाकर बुरा नहीं है। डेविड एम बॉर्ग, ग्लेन सीनैन द्वारा गेम डेवलपर्स के लिए ऐ

08/03/2009 को 06:17
का स्रोत उपयोगकर्ता

वोट
12

एक अच्छा pathfinding एल्गोरिथ्म के लिए, का उपयोग कर एक * शायद एक अच्छा विचार होगा, हालांकि, एक सरल खेल है कि, परिष्कृत कुशल, और न ही प्रभावी रास्ता खोज की आवश्यकता नहीं है, बस की दिशा जानने के आधार पर पात्रों लक्ष्य की ओर ले जाने के लिए होने के लिए लक्ष्य पर्याप्त होना चाहिए।

उदाहरण के लिए, निर्णय चरित्र चाल, स्यूडोकोड में बनाने के लिए:

if (target is to the left of me):
    move(left);
else
    move(right);

if (target is above me):
    move(up);
else
    move(down);

हाँ, चरित्र सबसे कुशल आंदोलन बनाने के लिए नहीं जा रहा है, लेकिन यह खेल लूप के प्रत्येक यात्रा पर करीब है और लक्ष्य के करीब मिल जाएगा।

यह भी मेरा अनुमान है कि 80 के दशक शायद से एक आर्केड खेल परिष्कृत pathfinding एल्गोरिदम का उपयोग नहीं किया जाएगा।

08/03/2009 को 06:25
का स्रोत उपयोगकर्ता

वोट
6

एक "बड़ा क्षेत्र" जो pacman और भूत पर के बारे में स्वतंत्र रूप से स्थानांतरित कर सकते हैं - - तुम सिर्फ पिक्सल के एक ग्रिड है तो कम से कम पथ आसान है - भूत और pacman के बीच एक सीधी रेखा।

लेकिन "कम से कम पथ" निरपवाद रूप से मतलब है कि हम एक ग्राफ सिद्धांत समस्या को हल करने की कोशिश कर रहे हैं। (मैं आदि रेखांकन के ज्ञान, कुछ ग्राफ सिद्धांत, adj संभालने हूँ। मेट्रिसेस,!)

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

तो आप इस है: ( "*" = नोड "-, /, \, |" = धार)

*-*-*
|\|/|
*-*-*  ... (etc)
|/|\|
*-*-* 

अगर Pacman केंद्र में है, यह बहुत आसानी से किसी भी अन्य नोड के लिए स्थानांतरित कर सकते हैं।

कुछ वास्तविकता के अधिक करीब इस हो सकता है:

*-*-*
| | |
*-*-*  ... (etc)
| | |
*-*-* 

अब, pacman तिरछे स्थानांतरित नहीं कर सकते। निचले-दाएं कोने के केंद्र से जाने के लिए 2 "हॉप्स" के बजाय एक आवश्यकता है।

प्रगति जारी रखने के लिए:

*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*

अब, शीर्ष पर एक नोड के लिए बीच में एक नोड से जाने के लिए, आप 3 हॉप्स की जरूरत है। हालांकि, ले जाने के लिए की ओर नीचे केवल 1 हॉप लेता है।

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

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

उम्मीद है की वो मदद करदे!

08/03/2009 को 06:55
का स्रोत उपयोगकर्ता

वोट
0

मैं pacman द्वारा किए गए हर कदम पर कम से कम पथ एल्गोरिथ्म के लिए जाना लगता है। एक बहुत अच्छा कार्यान्वयन है डिज्कस्ट्रा एल्गोरिथ्म

बस संक्षेप में प्रस्तुत करने: कोने और किनारों के साथ एक ग्राफ के रूप में उलझन कल्पना। प्रत्येक किनारे पर प्रतीक्षा करनी पड़ती (आपके मामले में सभी किनारों एक ही वजन है) है। एल्गोरिथ्म एक कदम नीचे प्रत्येक तत्काल पहुंच योग्य किनारे ले जाकर vertice लक्षित करने के लिए स्रोत vertice से कम से कम पथ पाता है। फिर अगली vertice पर आप भी ऐसा ही और जब तक करने के लिए आप लक्ष्य को पाने करते रहें। पहले पथ पर पहुंच गया सबसे छोटा मार्ग है। वहाँ कई ध्यान में रखते हुए तरह बातें जहां pacman अपने पिछले स्थिति में था और किस दिशा में यह इतना ले जाया गया है कि आप एल्गोरिथ्म में कुछ heiristics प्राप्त कर सकते हैं तेजी लाने के लिए इस एल्गोरिथ्म के लिए किया अनुकूलन हो सकता है। मैं हर आंदोलन पर pacman करने के लिए प्रत्येक भूत से कम से कम पथ खोजने का सुझाव और उस दिशा में भूत कदम होगा। अंततः दूरी कम हो जाएगा और आप pacman को पकड़ने के लिए सक्षम हो जाएगा।

एक और अनुमानी यह प्रयोग किया जा सकता है कि सभी तत्काल pacman से पहुंचा जा सकता किनारों खोजने के लिए और भूत के द्वारा ही संभव के रूप में इन कोने के रूप में कई कवर करने के लिए प्रयास करने के लिए। तो बजाय लक्ष्य vertice हम कोने immediatetly लक्ष्य के रूप में pacman तक पहुंचा जा सकता सेट के रूप में pacman की स्थापना की, परिणाम होगा कि उपलब्ध भूत pacman का themajor बाहर निकलने के रास्तों को कवर है और उसे पकड़ने की कोशिश करेंगे।

08/03/2009 को 08:26
का स्रोत उपयोगकर्ता

वोट
3

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

पीएसी मैन एक शक्ति उठ गया है, एल्गोरिथ्म में फर्क सिर्फ इतना है कि, जब वे तुम्हें देखा, भूत आप के बजाय आप की ओर बढ़ के पलायन होता है।

तो, एक प्रामाणिक अनुभव के लिए, तो आप शायद सब पर एक बहुत ही परिष्कृत pathfinding एल्गोरिथ्म जरूरत नहीं है। आप कल्पना होना चाहते हैं, ज़ाहिर है, आप एक * लागू कर सकते हैं।

10/03/2009 को 09:11
का स्रोत उपयोगकर्ता

वोट
2

अपने दुश्मनों की ओर सीधे चलना एक शुरुआत है लेकिन जब आप एक उलझन जोड़ने आप थोड़ा होशियार pathfinding जोड़ने के लिए तो अपने भूत झुकता या मृत समाप्त होता है में अटक नहीं करना चाहती हूँ।

निम्नलिखित ट्यूटोरियल ए * के साथ शुरू करने के लिए एक महान हल्के गाइड, डाउनलोड करने योग्य उदाहरण के साथ है।

पथ टाइल पर ढूँढना आधारित नक्शे

12/03/2009 को 13:42
का स्रोत उपयोगकर्ता

वोट
1

Pacman में भूत के सभी एक अलग पीछा एल्गोरिथ्म था

  • ब्लिंकी -> पीछा करता है। आम तौर पर आप के लिए सबसे छोटा मार्ग ले, और पालन करने के लिए जाता है जाएगा।
  • पिंकी -> घात लगाकर हमले। पैक-मैन के लिए एक अधिक राउंडअबाउट रास्ते ले जाता है। घातक। (कनिष्ठा और ब्लिंकी विभिन्न विकल्प बनाने के लिए जब एक दिशा चुनने, अक्सर एक कोने में खिलाड़ी caging करते हैं)
  • रोशनाई पोता हुआ -> फ्रीक। इस दोस्त अजीब कार्य करता है। उन्होंने कहा कि बोर्ड के बारे में ले जाता है काफी बेतरतीब ढंग से, लेकिन जब वह पास में हो जाता है कभी कभी पीछा करता है।
  • क्लाइड -> बेवकूफ। बेतरतीब ढंग से ले जाता है। एक खतरे के ज्यादा नहीं।

भूत एक दिलचस्प पैटर्न उनकी गतिविधियों में प्रोग्राम है: कभी कभी, वे एक साथ संघर्ष और पीएसी मैन की उनकी खोज विरत और, भूलभुलैया के अपने-अपने कोनों में लौटने "बिखराव मोड" में प्रवेश करेंगे।

वहाँ कम से algo का पूरा विवरण है pacman डोजियर

सादर

Guillaume

10/04/2009 को 15:59
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more