الدرس 6 من 10

مولّد الأعداء

هدف الدرس

مجمّع زمن، وسقف للعدد

01

الشرح

الأعداء في أغلب الألعاب يأتون من مؤقّت: كل interval ثانية عدوّ جديد. والطريقة الساذجة — if (timer >= interval) { spawn(); timer = 0; } — تربط الإيقاع بسرعة الجهاز دون أن يظهر ذلك.

فالتصفير يرمي ما زاد على الفترة، وهو يختلف من إطار لآخر، فيتباطأ المعدّل كلما طالت الإطارات. والصحيح مجمّع زمن: أضف dt، ثم اطرح interval — لا تصفّر — ما دام timer >= interval. وwhile لا if: إطار طويل بعد العودة إلى تبويب مخفي قد يحمل ثلاث فترات، فيولد ثلاثة أعداء.

ولا بد من سقف: max عدوّ في آن واحد. والزمن الذي يمرّ والعدد ممتلئ يُستهلك ولا يُدّخر، وإلا انفجر المولّد بدفعة أعداء لحظة يخلو مكان.

02

المطلوب

اكتب updateSpawner(spawner, enemies, dt, rng) لمولّد { timer, interval, max }: كل عدوّ جديد تصنعه makeEnemy(rng) الجاهزة بالـ rng الممرَّرة، ويُضاف إلى enemies.

معايير التصحيح

6 معايير
  1. عدوّ عند اكتمال الفترة لا قبلها
  2. الزمن الزائد لا يضيع
  3. إطار طويل يولّد كل ما فات
  4. لا يتجاوز max
  5. الامتلاء لا يدّخر أعداء لما بعده
  6. العدوّ من makeEnemy بالـ rng الممرَّرة
index.html
المعاينة
index.html100%
–/6

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

6 معايير في بطاقة «المطلوب».