الدرس 4 من 10
فترات التهدئة
- 12 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
canUse و use و remaining
الشرح
لكل قدرة في اللعبة فترة تهدئة: كرة النار تنطلق ثم تنتظر ثلاث ثوانٍ قبل أن تنطلق مرّة أخرى. ولا حاجة إلى عدّ تنازلي في كل إطار: احفظ متى تجهز القدرة، readyAt[name] = now + duration، وقارن به الوقت عند الطلب. فلا شيء يتحدّث في كل إطار، ولا مؤقّت ينسى أحد إيقافه.
والوقت يصل معاملًا now، ولا تقرؤه الدالة بنفسها. في FiveM يأتي من GetGameTimer()، وفي LÖVE من love.timer.getTime()، وفي الفحص رقمًا تختاره أنت. فتعمل الدوال نفسها على ساعة الخادم، وعلى لعبة متوقّفة مؤقّتًا، وفي فحص يعطي النتيجة نفسها كل مرّة.
والفخّ أن يعيش الفحص في الواجهة وحدها. الزرّ الرمادي لا يمنع عميلًا معدَّلًا من إرسال الحدث إلى الخادم مئة مرّة في الثانية، فـuse نفسها تتحقّق. وإن رفضت فلا تمسّ المؤقّت، وإلا عوقب من ضغط قبل الأوان بلحظة بتهدئة كاملة جديدة.
المطلوب
أكمل في Cooldowns الدوال canUse(name, now) وuse(name, now) وremaining(name, now). القدرة التي لم تُستعمل جاهزة، وبعد استعمالها تجهز حين يبلغ now وقت الاستعمال مضافًا إليه مدّتها من durations. وuse تُرجع true وتبدأ التهدئة، أو false بلا أي تغيير. وremaining تُرجع ما بقي، ولا تقلّ عن صفر.
معايير التصحيح
6 معايير- القدرة التي لم تُستعمل جاهزة
- use تبدأ التهدئة
- تجهز عند انقضاء المدّة بالضبط
- use أثناء التهدئة تُرفض ولا تمدّها
- remaining تعدّ تنازليًّا ولا تنزل تحت الصفر
- لكل قدرة مؤقّتها