الدرس 2 من 10
حالة المفاتيح
- 14 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
المفتاح حالة لا حدث
الشرح
الطريقة البديهية خاطئة: أن تحرّك اللاعب داخل مستمع keydown. فهذا الحدث يصل مرّة، ثم يسكت نحو نصف ثانية، ثم يتكرّر بإيقاع يحدّده نظام التشغيل لا لعبتك. فتتقطّع الحركة، ولا يتكرّر إلا آخر مفتاح ضُغط.
الألعاب تفصل الأمرين: المستمعان يسجّلان ما هو مضغوط الآن في كائن keys — true عند keydown وfalse عند keyup — والحلقة تقرأ هذه الحالة كل إطار وتحرّك بـ dt.
وانتبه للقطر: ضغط اليمين والأسفل معًا خطوة كاملة على كل محور، فيقطع اللاعب قطريًا √2 ضعف ما يقطعه مستقيمًا — أسرع بنحو 41%. والحلّ أن تقسم متّجه الاتجاه على طوله Math.hypot(dx, dy) قبل ضربه في السرعة.
المطلوب
املأ keys من keydown وkeyup على window بالمفتاح e.key. ثم اكتب applyInput(player, keys, dt): الأسهم الأربعة تحرّك اللاعب بسرعة player.speed بكسل في الثانية — والأعلى ينقص y — والحركة القطرية بطول المستقيمة. للتجربة انقر المعاينة ثم حرّك بالأسهم.
معايير التصحيح
5 معايير- keydown يسجّل المفتاح في keys
- keyup يرفعه
- السهم الأيمن يحرّك بـ speed × dt
- السهم الأعلى ينقص y
- القطر ليس أسرع من المستقيم