الدرس 1 من 10
حلقة اللعب
- 14 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
استدعاء update ثم draw نحو ستّين مرّة في الثانية
الشرح
كل لعبة، من Pong إلى أكبر الألعاب، تقوم على حلقة واحدة تتكرّر، فيها تحدّث حالة اللعبة ثم ترسمها. والدالة requestAnimationFrame تستدعي الحلقة قبل كل إطار يرسمه المتصفح، أي نحو ستّين مرّة في الثانية.
وما يجعل الحركة متساوية على كل جهاز أن تضربها في dt، وهو الزمن الذي مرّ منذ الإطار السابق، ولو لم تفعل ذلك لأسرعت اللعبة على الشاشات السريعة وأبطأت على البطيئة.
واجعل update منفصلة عن draw، فدالة التحديث تحسب منطق اللعبة فقط ولا علاقة لها بالرسم، ولذلك تستطيع اختبارها وحدها وإعادة استعمالها، أما دالة الرسم فتقرأ الحالة وترسمها دون أن تغيّرها.
المطلوب
اكتب update(ball, dt, width) لتحرّك الكرة بمقدار vx * dt، فإن تجاوزت الجدار الأيمن أو الأيسر ارتدّت بعكس إشارة vx. أما الرسم والحلقة فجاهزان.
الفحوص
5 فحوص- الدالة update معرَّفة
- الحركة تتناسب مع dt
- الكرة ترتدّ عن الجدار الأيمن
- الكرة ترتدّ عن الجدار الأيسر
- لا تتحرّك إن كان dt صفرًا