الدرس 4 من 10
حلقات التكرار
- 13 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
for و while و repeat و break
الشرح
الحلقة العددية for i = first, last, step do ... end تعدّ من first إلى last شاملةً الطرفين، والخطوة اختيارية وافتراضها 1. وللعدّ التنازلي خطوة سالبة: for i = 3, 1, -1. ومن دونها لا تدور الحلقة مرّة واحدة ولا تشتكي، لأن 3 أكبر من 1 من البداية.
وحين لا تعرف عدد الدورات مسبقًا فـ while cond do ... end تفحص شرطها قبل كل دورة، وقد لا تدخل أبدًا. أما repeat ... until cond فتنفّذ جسمها أوّلًا ثم تفحص، فتدور مرّة على الأقل، وتتوقّف حين يصدق شرطها لا حين يخطأ.
وbreak تخرج من الحلقة فورًا، وبها تتوقّف عند أول قيمة تحقّق ما تبحث عنه. وليس في Lua continue؛ ضع بقية الجسم داخل if.
المطلوب
ابنِ countdown بحلقة تنازلية حتى يصير "3 2 1 انطلق". وبـ while اصرف xp: ما دامت تكفي needed اطرحها منها، وزِد level واحدًا وneeded مئة. وبـ repeat أسقط نصف enemies بالقسمة الصحيحة في كل موجة، وعدّ waves حتى لا يبقى أحد. وfirstLevel أول lvl من 1 إلى 100 يتجاوز فيه 50 * lvl * lvl عشرة آلاف، وأوقف الحلقة عنده.
معايير التصحيح
5 معايير- countdown تنازلي: 3 2 1 انطلق
- صرف الخبرة: المستوى 5 وبقي 234
- سبع موجات حتى لا يبقى أحد
- الموجات بـ repeat ... until
- firstLevel هو 15: الحلقة توقّفت عنده