الدرس 1 من 10

حلقة اللعب

هدف الدرس

استدعاء update ثم draw نحو ستّين مرّة في الثانية

01

الشرح

كل لعبة، من Pong إلى أكبر الألعاب، تقوم على حلقة واحدة تتكرّر، فيها تحدّث حالة اللعبة ثم ترسمها. والدالة requestAnimationFrame تستدعي الحلقة قبل كل إطار يرسمه المتصفح، أي نحو ستّين مرّة في الثانية.

وما يجعل الحركة متساوية على كل جهاز أن تضربها في dt، وهو الزمن الذي مرّ منذ الإطار السابق، ولو لم تفعل ذلك لأسرعت اللعبة على الشاشات السريعة وأبطأت على البطيئة.

واجعل update منفصلة عن draw، فدالة التحديث تحسب منطق اللعبة فقط ولا علاقة لها بالرسم، ولذلك تستطيع اختبارها وحدها وإعادة استعمالها، أما دالة الرسم فتقرأ الحالة وترسمها دون أن تغيّرها.

02

المطلوب

اكتب update(ball, dt, width) لتحرّك الكرة بمقدار vx * dt، فإن تجاوزت الجدار الأيمن أو الأيسر ارتدّت بعكس إشارة vx. أما الرسم والحلقة فجاهزان.

الفحوص

5 فحوص
  1. الدالة update معرَّفة
  2. الحركة تتناسب مع dt
  3. الكرة ترتدّ عن الجدار الأيمن
  4. الكرة ترتدّ عن الجدار الأيسر
  5. لا تتحرّك إن كان dt صفرًا
03

تلميحات

0/3
دروس المسارأتممت 0 من 10

تبني لعبة حقيقية على canvas تعمل في أي متصفح، فتتعلّم حلقة اللعب والحركة والتصادم وحساب النقاط.

مستواه متوسّط، وفيه 10 دروس مجموع مدّتها ساعتان ونصف.

index.html
المعاينة
index.html100%
–/5

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 5 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 10

تبني لعبة حقيقية على canvas تعمل في أي متصفح، فتتعلّم حلقة اللعب والحركة والتصادم وحساب النقاط.

مستواه متوسّط، وفيه 10 دروس مجموع مدّتها ساعتان ونصف.