سؤال

أساسا لها استنساخ بكمن اللعبة أنا أعمل على.لدي عدو الطبقة ، و 4 حالات من هذه الفئة التي تم إنشاؤها والتي تمثل كل 4 أشباح من اللعبة.

كل أشباح البدء في المناطق العشوائية من الشاشة ثم عليهم أن تشق طريقها نحو بكمن حرف.لاعب يتحكم بكمن ، تتحرك حولها ، ينبغي أن تتبع وتأخذ أقرب وسيلة ممكنة تجاهه.

لا يوجد متاهة/العقبات (بعد) حتى الخريطة بأكملها (400x400 بكسل) هي أرض مفتوحة لهم.

لاعب و كل شبح يمكنني استرداد X, Y, صورة سمات العرض والارتفاع.أيضا, لدي بالفعل الكشف عن التصادم خوارزمية لذا لا قلق من هذا الموضوع فقط عن الأشباح تجد طريقها إلى بكمن.

هل كانت مفيدة؟

المحلول

لخوارزمية الاستطلاعية جيدة، وذلك باستخدام أن A * ربما تكون فكرة جيدة، ومع ذلك، للعبة بسيطة التي لا تتطلب متطورة وفعالة، ولا فعال مسار البحث، ومجرد وجود الشخصيات تتحرك نحو الهدف عن طريق معرفة اتجاه الهدف ينبغي أن يكون كافيا.

وعلى سبيل المثال، فإن قرار لجعل هذه الخطوة حرف، في شبة الكود:

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

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

نعم، والطابع لن جعل الحركة أكثر كفاءة، ولكن سوف تحصل على أوثق وأقرب إلى الهدف في كل تكرار للحلقة اللعبة.

وكما انها تخميني أن لعبة الورق من ال 80 في وقت مبكر ربما لن يكون باستخدام خوارزميات متطورة الاستطلاعية.

نصائح أخرى

إذا كان لديك مجرد الشبكة بكسل - وهو "الحقل الكبير" الذي بكمن شبح يمكن أن تتحرك بحرية - ثم أقصر طريق هو سهل خط مستقيم بين الشبح و بكمن.

ولكن "أقصر الطرق" يعني دائما نحاول حل الرسم البياني نظرية المشكلة.(أفترض المعرفة البيانية بعض البياني نظرية adj.المصفوفات, الخ!)

في حالة أعلاه ، في كل بكسل إلى عقدة على الرسم البياني.كل عقدة متصل جيرانه عن طريق الحافة ، و كل حافة على قدم المساواة "الوزن" (الانتقال إلى العقدة "فوق" أي أبطأ من الانتقال إلى عقدة "أدناه").

بحيث يكون لديك هذا:("*" = عقدة, "-, /, \, |" = الحافة)

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

إذا بكمن هو في الوسط ، فإنه يمكن الانتقال إلى أي عقدة أخرى بسهولة جدا.

أكثر شيء أقرب إلى الواقع قد يكون هذا:

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

الآن بكمن لا يمكن أن تتحرك قطريا.الذهاب من المركز إلى أسفل اليمين يتطلب 2 "القفزات" بدلا من واحدة.

لمواصلة التقدم:

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

الآن أن تذهب من العقدة في الوسط إلى عقدة في الجزء العلوي ، تحتاج إلى 3 القفزات.ومع ذلك ، في التحرك نحو الأسفل يأخذ فقط 1 هوب.

سيكون من السهل أن تترجم أي لعبة متن الإعداد في الرسم البياني.كل "تقاطع" هو عقدة.الطريق بين اثنين من التقاطعات هو الحافة ، وطول هذا الطريق هو وزن الحافة.

أدخل*.من خلال انشاء الرسم البياني (استخدام adjency مصفوفة أو قائمة من العقد) ، يمكنك استخدام A* خوارزمية لإيجاد أقصر طريق.خوارزميات أخرى تشمل الخاص ديكسترا.وغيرها الكثير!ولكن تحتاج أولا إلى الإطار الخاص بك المشكلة من حيث الرسم ، ثم لعبة مع كيف يمكنك أن تذهب من العقدة A (بكمن) إلى العقدة B (الشبح).

على أمل أن يساعد!

ولقد كان وقتا طويلا جدا، ولكن من ذاكرة أشباح في باك مان لم تفعل الكثير في طريق الاستطلاعية. سيفعلون قياسية نسبيا اجتياز متاهة العشوائية حتى "رصدت" لك، والتي تشارك في العثور على الطريق دون عائق على طول محور ممر نحو لكم، وبعد ذلك سوف تنتقل مباشرة نحو لك حتى اختفى من خط الأفق، وعندها ستستأنف نمط عشوائي. على مستويات أعلى باك مان سيترك مسارات غير مرئية خلفه لفترة من الوقت أن أشباح أن "رائحة" ويتبع في بعض الأحيان.

عند حصلت باك مان تصل قوتها، والفرق الوحيد في الخوارزمية هو أنه عندما رصدت لكم، أشباح أن يهرب لك بدلا من التحرك نحو لك.

وهكذا، على تجربة أصيلة، وربما كنت لا تحتاج إلى الاستطلاعية خوارزمية متطورة للغاية على الإطلاق. إذا كنت تريد أن تكون نزوة، بالطبع، يمكنك تنفيذ A *.

والمشي مباشرة نحو أعدائك هو البداية ولكن عند إضافة متاهة سترغب في إضافة الاستطلاعية أذكى قليلا حتى أشباح الخاص بك لا تتعثر في المنحنيات أو الطرق المسدودة.

وهذه الدورة التعليمية هو دليل خفيف الوزن الكبير لتبدأ A *، مع أمثلة للتحميل.

مسار العثور على بلاطة أساس خرائط

في بكمن كل من شبح مختلفة مطاردة الخوارزمية

  • بلينكي -> مطاردات.وعادة ما تأخذ أقصر الطرق لك يميل إلى متابعة.
  • الخنصر -> الكمائن.يميل إلى اتخاذ المزيد من دوار طريقة pac-man.القاتلة.(الخنصر و بلينكي تميل إلى جعل الخيار عند اختيار الاتجاه ، غالبا ما حبس لاعب في الزاوية)
  • محبر -> غريب.هذا الرجل يتصرف بغرابة.ينتقل عن المجلس عشوائيا إلى حد ما, ولكن في بعض الأحيان مطاردات عندما يحصل في إغلاق.
  • كلايد -> الأحمق.يتحرك بشكل عشوائي.ليس الكثير من التهديد.

الأشباح نمط مثيرة للاهتمام المبرمجة في الحركات:أحيانا, فإنها في الوقت نفسه بوقف سعيها باك مان والعودة إلى زوايا كل منها من المتاهة ، دخول "وضع مبعثر".

وهناك وصف كامل algo في بكمن الملف

تحياتي

غيوم

هل يمكن أن تبدأ النظر إلى A * (A نجوم)

و هنا هي صفحة على أن لها صلات خوارزميات أخرى مسار الحقائق.

[عدل] جاه ... الدماغ بطيئة جدا ... نسيت حول هذا الكتاب، هو C أو C ++ (أنسى التي)، ولكن لا يزال بإمكانك الحصول المفاهيم لجاوا. قد لا يكون من الأسهل بالنسبة لك للقراءة، ولكن ليست سيئة بشكل عام. AI لعبة المطورون ديفيد M. بورغ، جلين سيمان .

وأعتقد أن الذهاب للأقصر خوارزمية مسار في كل خطوة التي بكمن. والتنفيذ الجيد جدا هو ديكسترا خوارزمية .

وفقط لتلخيص: تصور المتاهة مثل رسم بياني مع القمم والحواف. كل حافة ديها الانتظار (في قضيتك جميع حواف لها نفس الوزن). وجدت خوارزمية أقصر مسار من VERTICE المصدر إلى الهدف VERTICE عن طريق تحريك خطوة واحدة أسفل كل حافة يمكن الوصول إليها مباشرة. ثم على VERTICE المقبل أن تفعل الشيء نفسه والحفاظ على القيام حتى لتحصل على الهدف. المسار الأول الذي تم التوصل إليه هو أقصر الطرق. يمكن أن يكون هناك العديد من التحسينات التي تمت على هذه الخوارزمية لتسريع الأشياء مثل أخذ بعين الاعتبار حيث كان بكمن في موقفها السابق وفي الاتجاه الذي تحرك بحيث يمكنك الحصول على بعض heiristics في الخوارزمية. أود أن أقترح إيجاد أقصر طريق من كل شبح لبكمن على كل حركة ونقل شبح في هذا الاتجاه. في نهاية المطاف سوف يقلل المسافة، وسوف تكون قادرة على التقاط بكمن.

والكشف عن مجريات الأمور الأخرى التي يمكن استخدامها للعثور على جميع حواف فورية يمكن الوصول إليها من بكمن ومحاولة لتغطية أكبر عدد ممكن من هذه القمم ممكن عن طريق أشباح. وذلك بدلا من وضع بكمن كما VERTICE الهدف الذي حددناه القمم يمكن الوصول إليها من قبل immediatetly بكمن هدفا، ستكون النتيجة أن أشباح المتاحة ستحاول التستر themajor طرق الهروب من بكمن وقبض عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top