لا تحسب الأرقام في "بي" ،
"E" هي نفسها بلا حدود.
وإذا كتبتها من النهاية ، فماذا سيكون أكثر؟
مارتن جاردنر "تيك تاك تو"في هذه المقالة ، أردت اختيار كتابات مختلفة ، لكنني وجدت أنها مثيرة للشفقة. تم تأجيل
الإصدار التالي مرة أخرى. خلال هذا الوقت ، تمكنت من تغيير وظائف! يتطلب العمل في مكان جديد الكثير من الطاقة ، لكنني ما زلت أجد بعض الوقت لهوايتي الصغيرة. ويجب أن أقول ، ما يجب أن أواجهه في العملية أصبح أكثر صعوبة. سأخبرك عنه. أردت أن أبدأ بخط آخر ، لكن هذا ليس سيئًا أيضًا.
هذه المرة ، كان هناك
mankals جديدة و "
ألعاب انتقالية " (هؤلاء هم
هالما وأقاربها). نوع من السباق يجب أن تأخذ فيه منزل خصمك مع قطعك أمامه. يمكن القفز فوق الأرقام (سواء الخاصة بنا أو غيرها) (كما هو الحال في
لعبة الداما ) ، ولكن لا توجد لقطات. ماذا اشرح لك؟ بالتأكيد ، لعب العديد منكم
زوايا في طفولتك.
للوهلة الأولى ، تبدو اللعبة بسيطة ، لكن المشاكل بدأت بالفعل على مستوى النواة. تذكر ،
تحدثت عن التحركات المركبة؟ ولأسباب عديدة ، من الملائم أكثر تمثيلها كأخرى مركبة - ككل واحد ، وليس كتسلسل من التحركات الجزئية. هذا أكثر ملاءمة للذكاء الاصطناعي ، ومن وجهة نظر التصميم ، هناك ألعاب يبدو وصفها في شكل تحركات مركبة أكثر طبيعية. لكن هناك مشكلة واحدة.
في لعبة الداما ، عند القيام بنقل مركب ، تتم إزالة القطع من اللوحة (ربما في نهاية الحركة). في الزوايا - يمكنك القفز فوق قطعك أو قطع خصمك إلى ما لا نهاية. حرفيا. ولا يتم حفظ أي ملحقات هنا ، لأن كل شيء يدور في دورات دون الوصول إليها ، في النواة ، حتى في مرحلة إنشاء قائمة الحركات. اضطررت إلى تغيير هذا المنطق ، من خلال تنفيذ خيار (
اكتشاف الحلقات ) ، والذي يستحق التفكير فيه مسبقًا.
لم يكن الأمر سهلاً مع البوت أيضًا.تكمن المشكلة الرئيسية في عائلة الألعاب هذه في أنه ليس من السهل تحديد وظيفة التقييم التي تمثل بشكل كاف الحالة على اللوحة. نظرًا لأن الهدف من اللعبة هو الوصول إلى "منزل" الخصم ، فمن الممكن تقدير المسافة الإجمالية من جميع القطع إلى الحقول المستهدفة (
مانهاتن أو
إقليدس - لا فرق) ، ولكن في Halm ، في ظل مجموعة ناجحة من الظروف ، يمكن أن تقفز القطع فوق اللوحة بأكملها دفعة واحدة ، لذلك مثل هذا التقدير يعطي القليل.
مع الحقول الهدف ، كل شيء غير واضح أيضًا. لا يمكنك توجيه جميع الأرقام إلى نفس الحقل. الرقم الأول الذي يصل إليه هناك ويأخذه. سيكون من المثالي تحديد مجالات الهدف الأمثل لكل من الأشكال والانتقال إليها ، ولكن من الصعب ، في الخطة الحسابية. بالإضافة إلى ذلك ، يتغير الوضع على اللوحة مع كل خطوة. بشكل عام ، قررت عدم النظر إلى الأمام بعيدًا وقصر نفسي على
خوارزمية إرشادية بحتة.
مع هذا التقييم لنوعية السكتة الدماغيةDagaz.AI.heuristic = function(ai, design, board, move) { var t = getTargets(design, board, board.player); var m = getMove(move); var r = 1; if (m !== null) { if (!design.inZone(0, board.player, m.start)) { if (_.indexOf(t.first, m.end) >= 0) { r = 1000 + getDistance(t.first, m.start) - getDistance(t.first, m.end); } if (_.indexOf(t.goal, m.end) >= 0) { r = 700 + getDistance(t.first, m.start) - getDistance(t.first, m.end); } if ((r == 1) && (_.indexOf(t.second, m.end) >= 0)) { r = 500 - getDistance(t.second, m.end); } } if (r == 1) { if (design.inZone(2, board.player, m.end) && !design.inZone(2, board.player, m.start)) { r = 300; } } if (bestFound(design, board, 300)) return -1; if (r == 1) { var goals = getGoals(design, board, board.player); if (!_.isUndefined(goals[m.start])) { var goal = goals[m.start]; if (m.next == goal.next) { r = 100 + distance(goal.end, m.start) - distance(goal.end, m.end); } } } if (notBest(design, board, r)) return -1; var b = board.apply(move); if (isRestricted(design, b, board.player)) return -1; } return r; }
ليس حلاً مثاليًا ، ولكن البدء به يعمل جيدًا. إذا رأى البوت خطوة يمكن من خلالها "القفز" إلى "منزل" العدو ، فإنه يختارها. خلاف ذلك ، فإنه يقلل تدريجيا المسافة إلى الهدف ، في محاولة لتجنب الازدحام. يمكن أن يحدث الوضع الأكثر حزناً إذا ترك أحد اللاعبين (عن طريق الخطأ أو عن قصد) قطعته في "المنزل" ، والآخر - "أقفلها" بصف مزدوج من قطعه.
بطبيعة الحال ، فإن احتمال حدوث مثل هذا الموقف منخفض للغاية.بفضل القاعدة التي اقترحها Sidney Saxon ، مخترع ومجمع الألعاب من نيويورك. اقتراحه هو على النحو التالي: إذا كان للقطعة القدرة على مغادرة "منزلها" ، من خلال القفز من خلال قطعة الخصم أو سلسلة من القفزات بدءًا من هذه الخطوة ، فيجب أن تفعل ذلك. جربت نسخًا مختلفة من القواعد ، باستثناء إمكانية قفل الأرقام في "منزلهم" الخاص بهم ووجدت أن قاعدة Sidney Saxon هي الأكثر نجاحًا. بعد مغادرة "منزله" ، لم تعد القطعة قادرة على العودة إليها (على الرغم من أنه يحق لها المرور بها في عملية إتمام النقل).
تحسبًا لذلك ، أمنع تحركات "قفل" الخصم (إذا لم يكن عليك النظر في العديد من الحركات للأمام ، يمكنك السماح لنفسك بإرشادات معقدة جدًا) عن طريق تعيين تقييمات سلبية لهم ، لكن وضع "قفل" الحقول المستهدفة الفارغة لا يقل خطورة عن الروبوت (خاصة هذا ملحوظة في
هالما الكلاسيكية ،
بحركاتها المتعامدة البحتة). بشكل عام ، هذا البوت لديه مساحة للنمو.
في الألعاب التي يُسمح فيها بأخذ القطع ، لا يزال الأمر أكثر تعقيدًا. وهناك العديد من هذه الألعاب! ولعل أشهرها هو
كاميلوت ، الذي اخترعه جورج باركر في عام 1930. لكن شخصيا ، أحب اللعبة الأقل شهرة ، المبنية على أساس نفس الميكانيكا.
هذه
اللعبة هي القصة نفسها! مرة أخرى في عام 1908 ، جاء حق الاقتراع لتعزيز وجهات نظرهم السياسية. كل شيء هنا: مجلس العموم ،
ألبرت هول ، سجن المدينة والمستشفى. النساء اللواتي
يمتلكن حق الاقتراع يقاتلون رجال الشرطة هدفهم هو جلب 6 من شعبهم إلى مجلس العموم. لا يمكنهم دخول مقرهم ، ألبرت هول. تتحرك الأشكال في أي اتجاه. كما يسمح بالقفز فوق القطع الودية والعدو.
ومع ذلك ، يمكن أن تكون سلسلة القفزات طويلة بشكل تعسفي. إذا حدثت القضية في "الساحة" ، يتم قطع شخصيات العدو ، عند القفز عليها ، وإرسالها إلى السجن أو المستشفى. يتم قطع الأرقام العادية فقط قطريًا وكبيرًا (رجال شرطة وقادة حق الاقتراع) - في أي اتجاه. عندما يتم تجنيد 6 شخصيات في السجن والمستشفى ، يمكن "تبادلهم" من خلال إعادة دخول اللعبة. وبالتالي ، فإن القطع ، مثل
Shogi أو
Pillar Checkers ، لا تترك اللعبة أبدًا.
بشكل عام ، هذا الإصدار بأكمله هو فقط حول موضوع هذه الخيارات. على سبيل المثال ، أتقنت أخيرًا التحول الصحيح للقطع في
لعبة الشطرنج (حتى الآن ، تحولت البيادق إلى ملكات فقط ، وهو ، بشكل عام ، خطأ). لم أزعجني كثيرًا بهذا ورسمت مربع حوار اختيار على اللوحة. اتضح جيدًا (إذا كان بإمكاني نزع يدي حتى يمكن تمييزها عن الحصيرة ، فستكون رائعة بشكل عام).
ارتبط تحسين "نووي" آخر بتحسين واجهة المستخدم وله خلفيته الخاصة. كانت هناك
آلية في المشروع لفترة طويلة تسمح لك بتشفير الموضع الحالي بتمريره عبر عنوان URL. بالنظر إلى أن أوصاف جميع حالات اللعبة بهذا التنسيق مكتوبة في السجل ، فهي تساعد كثيرًا في تصحيح الأخطاء. هذا مجرد مستخدم لا يعرف شيئًا عن سجل المتصفح ، فهو قليل الاستخدام.
لا ، لا ، هذا ليس كل شيء جيد!هناك عدد من الألعاب ، تتكون طريقة اللعب منها من العديد من المراحل (ربما غير المتجانسة). كمثال ، يمكنك الاستشهاد باللعبة الشعبية لعام 2008 -
Kamisado . كل مرحلة من هذه اللعبة (قبل تمرير أحد الأرقام إلى آخر أفقي) قصيرة نسبيًا ، ولكن عند اكتمالها ، تستمر اللعبة. وفقًا للقواعد المتفق عليها ، يضع اللاعبون قطعهم مرة أخرى على السطر الأول ويحاولون مرة أخرى الوصول إلى آخر أفقي أمام الخصم (الرقم الذي حقق النصر في المرحلة السابقة يتلقى قدرات جديدة).
هذا هو الجانب من اللعبة الذي يقوم بأتمتة خيار "
المستويات التقدمية " ، والذي ينتقل تلقائيًا إلى المرحلة التالية من اللعبة عندما يفوز أحد اللاعبين. وبما أن الترتيب الأولي للأرقام يختلف من مرحلة إلى أخرى ، فإنه يتم حسابه بواسطة وحدة
الإعداد المشترك ويتم تمريره إلى المرحلة التالية من اللعبة من خلال
عنوان URL .
جنبا إلى جنب مع هذه الفرصة يذهب في طريقة أخرى ، مما يسمح لك لتنويع الترتيب الأولي للأرقام. يتيح لك خيار "
المحدد " ترميز العديد من الترتيبات الأولية (وحتى تكوينات اللوحة) داخل
ملف JS واحد. قم بتحديث صفحة
Reversi الرئيسية الخاصة بك وسوف تفهم ما أعنيه.
تم تصميم المكون الإضافي الجديد لحل المشكلة. من الناحية الهيكلية ، هذه شجرة عادية يتم فيها حفظ جميع حالات اللعبة التي ظهرت في جلسة اللعبة (وبما أن هذه الشجرة ، في المستقبل ، يمكن تحميل تاريخ اللعبة بالكامل إلى ملف
SGF ). لدى المستخدم القدرة على "قلب" هذه الحالات باستخدام الأزرار التي تظهر في الجزء العلوي من الشاشة.
هذا مريح حقًا ، ولكن يمكنك الحصول على المزيد من الاستفادة من السهمين في الأعلى. هذا هو بالضبط ما يفعله خيار "
وضع المستشار ". إذا كان المستخدم يفكر لفترة أطول من الوقت المحدد ، فإن البوت الذي يلعب به يحسب الدورة التدريبية له ويضع حالة اللعبة الجديدة في "مدير الجلسة". يمكن قبول الخطوة المقترحة بمجرد الضغط على زر "الأمام". وإذا لم تعجبك هذه الخطوة ، يمكنك دائمًا إرجاعها.
جلب الكثير من الفرح ، في عملية التطوير ، الصوت (على ما يبدو ، وهو أسهل بكثير). كان
التنفيذ الأول ساذجًا جدًا. لا أعرف ما هو متصل به ، ولكن في مكان ما في منتصف اللعبة ، توقف الصوت ببساطة عن التشغيل بدون أي رسائل في السجل. يتجلى هذا في جميع المتصفحات التي امتلكتها ، حتى بدأت في تخزين كائنات الصوت التي تم إنشاؤها في الذاكرة. ولكن بعد ذلك جاءت مشكلة أخرى.
إذا تم تشغيل الصوت لفترة طويلة ، وكان البوت
يعتقد بسرعة كافية (كما هو الحال في
الأفخاخ ، على سبيل المثال) ، فإن صوت تحركه ببساطة "ابتلع" ، والذي بدا غير سار للغاية. هنا اضطررت إلى الشامان لفترة طويلة وانتهت
بالعكازات . مع ضبط علامة "clonable" ، ما زلت أقوم بإنشاء العديد من مثيلات الصوت ، واحدة لكل لاعب (حتى إذا فقدوا نفس الصوت). بالطبع ، لم يساعد هذا بأي شكل من الأشكال في IE ، التي رفضت (لأسباب دينية بشكل واضح) التعامل مع كل من ملفات "wav" و "ogg". هذا المتصفح ، بالنسبة لي ، يعمل بصمت!
خلاف ذلك ، ذهب الإفراج دون حوادث.
يتكون Halme و
mankalam من
لعبتين من ألعاب الشطرنج ،
بالإضافة إلى العديد من الاختلافات العظيمة في Shogi التي قرأتها في العدد التالي من
Il fogliaccio degli astratti ولعبة بسيطة أخرى من الرفاق الصينيين. أوه نعم ، إليك شيء آخر:
مجرد محاكاة صغيرة للذاكرة قصيرة المدى. من الضروري فتح نفس الأزواج (الملكة مع الملكة ، الملك مع الملك ، إلخ) من نفس اللون. يتم إعطاء نقاط لهذا ولكل شيء عن جميع النقرات 200. نظرًا لأن المكافآت تُمنح للنقاط (للتبديل بين البدلات الحمراء والسوداء ، على سبيل المثال) ، يمكنك التنافس مع الأصدقاء حول من لديه ذاكرة أفضل. إذهب!
وكل عام جديد سعيد!