1 min read

مشروع السيشن الأول لـ CS50 بالعربي (الاختيار الأول): الـ Bug Chaser (لعبة النجاة)

مشروع السيشن الأول لـ CS50 بالعربي (الاختيار الأول): الـ Bug Chaser (لعبة النجاة)

أهلاً بيك في أول تحدي للمشاريع! في الاختيار ده، هنحط الـ Logic بتاعك تحت الاختبار وهنبني لعبة نجاة (Survival Game) حماسية جداً. أنت هتمثل الـ Programmer اللي محبوس جوه الـ Codebase، وهدفك بسيط: تفضل صاحي لأطول فترة ممكنة والـ "Bug" بيطاردك في كل مكان.

الـ Project ده هيساعدك تتقن التحكم بالـ Keyboard، وإزاي تعمل Homing Logic للمطاردة، وإزاي تستخدم الـ Variables عشان تحسب نجاحك. يلا بينا نبدأ الـ Coding!

مرجع:

لو محتاج مساعدة عشان تلاقي الـ Blocks أو تفهم كل واحد بيعمل إيه بالظبط، شوف الـ Scratch Reference: ده موقع تفاعلي معمول مخصوص عشان يساعدك تدور وتعمل Filter وتفهم كل الـ Scratch Blocks بالتفصيل. لو احتجت في أي وقت تعرف أي Block تستخدمه عشان تبني الـ Logic بتاعك، الموقع ده هيكون "صديقك الصدوق"!

الخطوات دي عشان تبني اللعبة بتاعتك. وخليك فاكر: الهدف مش بس إنك تخلص، الهدف إنك تفهم الـ Logic بتاع اللعبة شغال إزاي!

الخطوة الأولى: اختار الـ Characters بتاعتك (الـ Sprites)

في الـ Scratch، كل عنصر في اللعبة بنسميه "Sprite". افتح الـ Sprite Library واختار الأبطال بتوعك:

  1. الـ Player: ده بيمثلك أنت جوه اللعبة.
    • مقترحات: شخصية بني آدم، قطة، أو حتى صورة Laptop.
  2. الـ Enemy: ده الـ "Bug" اللي هيطاردك.
    • مقترحات: حشرة (Beetle)، شبح، أو الـ Sprite اللي شكله "X" أحمر.
  3. الـ Backdrop: المكان اللي اللعبة هتحصل فيه (الخلفية).
    • مقترحات: "Neon Tunnel" عشان تدي شكل تكنولوجي، أو "Stars" لو عايز تخلي الـ Coding في الفضاء.

الخطوة الثانية: برمجة الـ Player (التحكم بالـ Keyboard)

إحنا عايزين الـ Player يتحرك كل ما ندوس على الزراير (الأسهم). هنستخدم الـ Conditionals (قاعدة If-Then) عشان نشيك إحنا دايسين على أنهي زرار.

الـ Blocks اللي هتحتاجها:

  • When Green Flag Clicked (عشان تبدأ الـ Logic).
  • Forever loop (عشان تفضل تشيك على الزراير طول ما اللعبة شغالة).
  • If <key [ ] pressed?> then (ده الـ Sensing block اللي بيحس بالزراير).
  • Change x by [ ] (للحركة يمين وشمال).
  • Change y by [ ] (للحركة فوق وتحت).

الـ Logic:

  • Up Arrow (سهم فوق): خلي الـ y بـ 5.
  • Down Arrow (سهم تحت): خلي الـ y بـ -5.
  • Right Arrow (سهم يمين): خلي الـ x بـ 5.
  • Left Arrow (سهم شمال): خلي الـ x بـ -5.
Pro-Tip: لو حسيت إن الـ Sprite بيتحرك بسرعة أوي، قلل الرقم من 5 لـ 3. ولو بطيء، جرب تخليه 10!

الخطوة الثالثة: برمجة الـ Bug (الـ Homing Logic)

الـ Bug لازم يعرف مكانك ويروحلك مهما رحت فين. هنستخدم الـ Motion blocks عشان نخليه يـ "Track" مكانك.

الـ Blocks اللي هتحتاجها:

  • Point towards [Player Sprite]
  • Move [ ] steps

الـ Logic:

جوه الـ Forever loop، قول للـ Bug إنه يـ Point towards [Player] وبعدين يـ Move 2 steps.

مستوى الاختيار (اختار واحد من دول):

  • الاختيار A (الـ Predator): الـ Bug هيمشي وراك بالظبط وبدقة.
  • الاختيار B (الـ Drifter): جوه الـ loop، زود Block اسمه turn pick random (-10) to (10) degrees. ده هيخلي الـ Bug حركته مش متوقعة وبيتهز وهو بيطاردك (Wobble).

الخطوة الرابعة: الـ Score والـ Game Over

هتقدر تنجو لأد إيه؟ محتاجين الـ Variable عشان نحسب الوقت.

  1. روح لخانة الـ Variables ودوس "Make a Variable" وسميها Score.
  2. ابدأ الـ Score: تحت الـ Green Flag، استخدم Set Score to 0.
  3. زيادة الـ Score مع الوقت: استخدم Forever loop جواها Wait 1 seconds وبعدها Change Score by 1.
  4. الـ Crash (نهاية اللعبة): لازم نوقف اللعبة لو الـ Bug لمسك.
    • زود ده جوه الـ Script بتاع الـ Bug: If <touching [Player]?> then [Stop All].

الخطوة الخامسة: حط التاتش بتاعك (Creative Choices)

عشان تخلي اللعبة بتاعتك مميزة، جرب تزود واحدة من الـ Features دي:

  • تغيير الحجم: كل ما الـ Score يوصل لـ 10، خلي الـ Bug يكبر شوية باستخدام الـ Change size by [10].
  • الـ Sound Effects: زود صوت "Boop" كل ما الـ Score يزيد، أو صوت "Crash" لما اللعبة تخلص.
  • الصعوبة (Difficulty): اعمل Duplicate للـ Bug! كده بقى عندك اتنين Bug بيطاردوك في نفس الوقت.

الـ Checklist قبل ما تسلم

  1. هل الـ Player بيتحرك بالـ 4 أسهم؟
  2. هل الـ Bug بيمشي ورا الـ Player لوحده؟
  3. هل الـ Score بيزيد كل ثانية؟
  4. هل اللعبة بتوقف أول ما يلمسوا بعض؟

تسجيل السيشن

لو محتاج تراجع أي جزء من الشرح وأنت شغال على الـ Project، تقدر تشوف تسجيل السيشن كامل من هنا: السيشن على YouTube

في السيشن دي اتكلمنا عن أساسيات الـ Computer Science، يعني إيه Binary، وإزاي بدأنا أول خطواتنا مع Scratch.


خليك فاكر: "مش المهم إزاي الكود بيتكتب، المهم إزاي بتفكر عشان تحل المشكلة." نشوفكم في الـ Project اللي جاي!