هل هو أكثر كفاءة لتضمين وظيفة "التحقق من موقع" في "وظيفة نقل" للحصول على لعبة، أو خارج كدالة خارجية؟

StackOverflow https://stackoverflow.com/questions/958060

سؤال

أقوم بإنشاء لعبة في C ++ (تحدث منها، هل يستخدم الرمز الذي أستخدمه الأمر؟)، الذي يوصفه Coudl بمثابة لعبة لوحة، وأنا أتساءل أي من هذين "الشيكتين" إذا كانت الشخصية خارج الحدود " الوظائف هي أكثر كفاءة:

واحد:

int main()
{
    //display board
    //get player input
    //move player
    //if player is out of bounds,
      //force player back into bounds
}

اثنين

//int main()
{
    //same thing, except without last two lines.
}
void move(char input)
{
    //if input does not place player out of bounds
      //move player according to input
}

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

أود أن أعرف أي من هذين (الأنظمة؟) أكثر كفاءة أو أسرع من الآخر، أو، إذا كلاهما متساويا، أي واحد من هذه سيكون أسلوب ترميز أفضل؟

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

المحلول

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

نصائح أخرى

هذا الأخير أسرع (لا يفعل وتراجع). وأعتقد أيضا أنه من الأنظف، لكن هذا هو مسألة رأي.

الفاجعة قبل الحركة سيكون أسرع، حفظ، أفترض، احتمالات شخص الخروج من الحدود منخفضة.

بخصوص النمط، أوصي ليس التحقق من الحدود من خلال طريقة النقل ()، حتى إذا تم استخراج هذا الشيك في طريقته الخاصة، فكلما يمنحك "أسباب لتغيير" خطوة () أسفل الأسلوب () مسؤولية واحدة; ؛ بعض الناس يفرضون هذا فقط على مستوى الفصل، لكنني أوصي به للأساليب عندما يمكنك الابتعاد عنها).

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