في عام 2048، يقوم اللاعبون بتحريك المربعات إلى اليسار أو اليمين أو لأعلى أو لأسفل في محاولة مطابقة ودمج البلاط ذي القيمة المتشابهة. عندما يتم دمج المربعات، يتم دمج قيمها لإنشاء مربع واحد بقيمة أعلى. يستمر اللاعبون في القيام بالتحركات حتى لا يكون من الممكن إجراء المزيد من عمليات الدمج وتنتهي اللعبة. ومع ذلك، قد يكون تحقيق حركة التجانب الصحيحة أمرًا صعبًا، خاصة عندما يمكن دمج عدة تجانبات.
في التعليمات البرمجية المتوفرة لوظيفة ProcessCommand، يتم تجانب التجانب الحركة تخضع لقضية دمج. تنشأ المشكلة عندما يكون هناك قطعتان من نفس القيمة متجاورتين ويقوم اللاعب بحركة قد تؤدي إلى دمج هذه المربعات. إذا تم مسح اللوحة في الاتجاه الخاطئ، فسيتم دمج المربعات مرتين بدلاً من مرة واحدة.
لحل هذه المشكلة ، من الضروري مسح اللوحة في الاتجاه المعاكس لحركة اللاعب. يسمح هذا بدمج المربعات ووضع علامة عليها كمدمجة، مما يمنع عمليات الدمج اللاحقة في نفس العمود أو الصف.
عندما يتحرك اللاعب لأعلى، على سبيل المثال، يجب مسح اللوحة من الأسفل نحو الأعلى. يضمن ذلك دمج المربعات السفلية أولاً، ومنع أي عمليات دمج لاحقة. وينطبق منطق مماثل على اتجاهات الحركة الأخرى.
بالإضافة إلى ذلك، يعرض الكود المقدم تكرارًا للكود في حلقات for المتداخلة الخاصة به لكل حالة. يمكن تحسين ذلك باستخدام حلقة for واحدة واستخدام بيان التبديل للتعامل مع الحالات المختلفة. فيما يلي مثال للكود المحسّن:
for i := 1; iفي هذا الكود المحسن، تتعامل وظيفتا updateBoardDown() وupdateBoardUp() مع حركة التجانب للاتجاهات لأسفل ولأعلى، على التوالي. يمكن تنفيذ وظائف مماثلة للاتجاهين الأيسر والأيمن.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3