الدرس 4 من 10
مضرب Pong
- 16 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
مضرب لا يخرج من الملعب وارتداد يتحكّم فيه اللاعب
الشرح
تقوم لعبة Pong على أمرين، الأول أن المضرب لا يخرج من الملعب، فتحرّكه بمقدار dir * speed * dt ثم تحصر موضعه بين 0 وheight - h، ويكون الحصر بعد الحركة لا قبلها، لأن الفحص قبل الحركة يسمح للمضرب بتجاوز الحدّ بمقدار حركة إطار كامل.
والثاني هو ما يجعلها لعبة مهارة، فالكرة لا ترتدّ كما يرتدّ الضوء عن المرآة، بل بزاوية يحدّدها موضع الضربة، فإذا ضربت منتصف المضرب رجعت أفقية، وكلما ابتعدت الضربة نحو طرفه زاد ميلها حتى 60°، وبهذا يوجّه اللاعب الكرة بمضربه.
ولحساب ذلك تأخذ offset قيمة من -1 عند الطرف الأعلى إلى 1 عند الطرف الأسفل، وتكون الزاوية offset * Math.PI / 3، ثم توزّع السرعة نفسها على المحورين باستعمال cos وsin، فالميل يغيّر اتجاه الكرة ولا يغيّر مقدار سرعتها.
المطلوب
اكتب movePaddle(paddle, dir, dt, height)، وقيمة dir فيها -1 أو 0 أو 1، واجعل المضرب { x, y, w, h, speed } يبقى داخل الملعب. ثم اكتب bounce(ball, paddle) للمضرب الأيسر بحيث تحافظ على مقدار السرعة Math.hypot(vx, vy)، وتجعل vx موجبًا، وتحسب vy من موضع الضربة. والمضرب في المعاينة يلعب وحده.
الفحوص
6 فحوص- المضرب يتحرّك بمقدار dir × speed × dt
- المضرب لا يخرج من الملعب من أعلى أو من أسفل
- الضربة في المنتصف تُرجع الكرة أفقية
- أعلى المضرب يرفع الكرة وأسفله يخفضها
- الضربة الأبعد عن المنتصف أكثر ميلًا
- الكرة ترتدّ بمقدار السرعة نفسه