كيفية حل "كاسحة ألغام" (وجعلها أفضل)


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

المنطق المحلي: صفر الألغام المجاورة


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

هذا المنطق محلي تمامًا: يتم أخذ معلومات خلية واحدة فقط في الاعتبار لاتخاذ قرار بشأن الإجراء التالي.

من الصعب الخروج بموقف تصبح فيه اللعبة أسوأ بدون هذه المساعدة التلقائية. حاول أن تلعب مثل هذه اللعبة للحصول على فكرة عن كيفية سيرها دون فتح الخلايا تلقائيًا [في المقال الأصلي ، كل الأمثلة تفاعلية] :


الاعتبارات المحلية على أساس البيئة


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

في هذه القواعد ، تؤخذ خلية واحدة بعين الاعتبار ، وكذلك حالة الخلايا المجاورة (مفتوحة / محددة).

يمكن أن يكون تطبيق هذه القواعد يدويًا ممتعًا. إذا أضفت مؤقتًا ، يبدأ اللاعب في تعلم كيفية تطبيقها بسرعة وبدقة. هذا يحول كاسحة ألغام إلى لعبة رد فعل . ماذا يحدث إذا قمنا بأتمتة هذه القواعد؟


هذه الأتمتة لها تأثير جانبي مثير للاهتمام - إن تحديد المربع يمكن أن يكون له عواقب وخيمة على الفور.

وإلا ، فقد نواجه مواقف يمكن تقسيمها إلى ثلاث فئات:

  1. ألعاب حلها بالكامل من خلال تطبيق القواعد التلقائية
  2. المواقف المعقدة التي تتطلب المزيد من الخلايا للتفكير
  3. حالات اللعبة التي لا توجد فيها طريقة منطقية للمضي قدماً - يمكن للاعب فقط الاختيار عن طريق الصدفة ، مع مراعاة الاحتمالات.

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

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

الوضع 3 يدمر تماما كل المتعة. ومع ذلك ، سمعت أن بعض الناس يحبون لعب الألعاب بشكل عشوائي .

هل من الممكن التخلص من الموقف 3؟

الحل الكامل: التفكير العالمي


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


هل من الممكن البحث في مساحة الدولة بأكملها من اللعبة؟ كم من الاختلافات في الدولة موجودة؟

معين:

ث = عرض المجال

ح = ارتفاع المجال

ك = عدد الدقائق

ن = ث

ثم عدد الحالات الممكنة هو

تبدأ


بالنسبة للمستويات القياسية "المبتدئين" و "الهواة" و "المحترفين" ، فهذا يعطينا:




نحن نفهم أن النهج الساذج غير مناسب تمامًا هنا. دعونا نرى كيف يمكن أن تظهر الخوارزمية الساذجة ومعرفة ما إذا كان يمكن تحسينها إلى شيء فعال.

خوارزمية ساذجة


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

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

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

وبالتالي ، يمكننا أن نجد كل الشروط المنطقية اللازمة للحالة الحالية للحقل.

خلايا مع وبدون قيود


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

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


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

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

في الحالة الموضحة أدناه ، نحن نعرف مواقع جميع الألغام ، لذلك يجب أن تكون منظمة العفو الدولية قادرة على فهم أن الخلايا المتبقية ليست مشغولة:


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


نسخة عشوائية


إذا قمنا بتشغيل برنامج Solver العالمي تلقائيًا ، فسنحصل على نسخة محسنة عشوائيًا من Minesweeper:


يمكنك تقسيم الألعاب في هذا الإصدار إلى ثلاث فئات:

  1. الألعاب التي يتخذ فيها اللاعب خيارات تعسفية ويفوز.
  2. الألعاب التي يتخذ فيها اللاعب خيارات تعسفية ويفقدها.
  3. الألعاب التي تتطلب الذكاء الاصطناعي كثيرًا من الوقت ، ويمكن للاعب بالفعل استخدام التفكير.

من الواضح أن هذه لعبة مصادفة. ما هو جاذبية هذه الألعاب؟ من حيث المنطق ، تشبه اللعبة الموضحة أعلاه ما يلي:


ولكن أي لعبة عشوائية أفضل؟ يبدو أن معنى الألعاب الأخرى العشوائية يكمن في وجود علاقة معقدة بين تصرفات اللاعب والفوز / الخسارة. لرسم أرقام اليانصيب ، يتم استخدام الآلات المعقدة التي ليست في عجلة من أمرنا لتحديد رقم وجعل عرض كامل من إظهار هذا الرقم.

ربما يكون الحقل الكبير الذي يتم تحديده تلقائيًا لعبة جيدة جدًا
بعشوائية ، بالنظر إلى أن اللاعب يراقب الافتتاح التدريجي لجميع الخلايا.

هل يمكننا الخروج بنوع مختلف من اللعبة؟

نسخة حتمية


الآن لدينا AI قادرة على تحديد جميع الخطوات المنطقية من حالة لعبة معينة. في بعض الأحيان لن يكون قادرًا على إيجاد خطوات منطقية. في مثل هذه الحالات ، يتعين على اللاعب أن يخمن ويمكن أن يخسر إذا لم يحالفه الحظ.

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


وبالتالي ، تخلصنا تمامًا من المواقف التي قد يخسر فيها المرء بالصدفة.

ومع ذلك ، هناك استثناء واحد: لا يزال هناك احتمال لتدهور المواقف التي يتعذر فيها على المحلل العالمي إكمال الحسابات في فترة زمنية معقولة. لسوء الحظ ، هذه هي النتيجة الحتمية المتمثلة في أن مهمة كاسحة ألغام مكتملة NP.

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

في الختام


بعد تطبيق Solver "Minesweeper" الكامل Solver ، تمكنا من إنشاء صيغة مختلفة للعبة ، خالية من لعنتها: الآن أصبح من المستحيل خسارتها نظرًا لحقيقة أنه عليك الاختيار بالصدفة عندما تكون قد حددت المجال بالكامل تقريبًا. يختلف هذا الإصدار عن اللعبة الأصلية فقط في تلك اللحظات التي تحتاج فيها إلى التخمين بشكل عشوائي ، لذلك يمكنني افتراض أنها أكثر متعة من اللعبة الأصلية.

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

Source: https://habr.com/ru/post/ar453800/


All Articles