1 min read

مشروع السيشن الأول لـ CS50 بالعربي (الاختيار الثاني): Sketchnote Catch (أفكار سريعة)

مشروع السيشن الأول لـ CS50 بالعربي (الاختيار الثاني): Sketchnote Catch (أفكار سريعة)

أهلاً بيك في أول تحدي للمشاريع! في الاختيار ده، هنحط سرعة رد فعلك تحت الاختبار وهنبني لعبة صيد سريعة وممتعة. أنت هتمثل العقل المبدع اللي بيحاول يلحق كل الـ Sketchnotes والأفكار اللي نازلة من السما، وهدفك بسيط: تلحق أكبر عدد ممكن قبل ما يلمسوا الأرض والسرعة بتزيد طول الوقت.

الـ Project ده هيساعدك تتقن الحركة الأفقية، وإزاي تعمل Physics لسقوط العناصر، وإزاي تستخدم الـ Variables عشان تصعّب اللعبة مع الوقت. يلا بينا نبدأ الـ Coding!

مرجع:

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

الخطوات دي عشان تبني اللعبة بتاعتك وتتمكن من الـ Logic بتاع الـ Variables والـ Physics.

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

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

  1. الـ Collector: ده الـ Character اللي هتتحكم فيه عشان تلحق الأفكار.
مقترحات: سلطانية (Bowl)، باسكت، أو شخص رافع إيده لفوق.
  1. الـ Sketchnote: دي الـ "Idea" اللي بتقع من السما.
مقترحات: لمبة، نجمة، أو عملة دهب.
  1. الـ Backdrop: مكان شغل نضيف عشان الأفكار بتاعتك تظهر فيه.
مقترحات: "Boardwalk" أو خلفية غامقة بسيطة (Minimalist) عشان تخلي الأفكار الدهبي تنور فيها.

الخطوة الثانية: برمجة الـ Collector (الحركة الأفقية)

الـ Collector مش محتاج غير إنه يتحرك يمين وشمال بس بطول الجزء السفلي من الشاشة.

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

  • When Green Flag Clicked
  • Forever loop
  • Set x to [mouse x] أو Change x by [ ] باستخدام الـ Arrow keys.

الـ Logic:

  • الاختيار A (السهل): استخدم الـ Set x to [mouse x] block جوه الـ forever loop. الباسكت دلوقتي هيتحرك مع مكان الـ Mouse بتاعك بالظبط.
  • الاختيار B (الـ Keyboard): استخدم الـ if <key [right/left] pressed?> عشان تعمل change x بـ 10 أو -10.

الخطوة الثالثة: برمجة الأفكار اللي بتقع

الـ "Ideas" محتاجة تنزل من السما وتعمل Reset لنفسها أول ما تتمسك أو تخبط في الأرض.

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

  • Go to random position
  • Set y to [180] (أعلى نقطة في الشاشة)
  • Change y by [Speed] (حركة النزول)
  • If <y position < -170> then (عشان نشيك لو خبطت في الأرض)

الـ Logic:

  1. أول ما اللعبة تبدأ، روح لـ random position فوق خالص عند (y = 180).
  2. جوه الـ forever loop، اعمل change y عن طريق الـ Variable اللي هنسميه Speed.
  3. لو الـ Sprite لمس الأرض (y < -170)، ارجع تاني لـ random position فوق خالص.

الخطوة الرابعة: الـ Score والـ "Difficulty Warp"

هنا بقى اللعبة بتبدأ تبقى أصعب. هنستخدم الـ Variables عشان نتابع الـ Score بتاعك وسرعة النزول.

  1. الـ Variables: اعمل اتنين Variables: واحد اسمه Score والتاني Speed.
  2. الـ Reset: تحت الـ Green Flag، اعمل Set Score to 0 وخلي الـ Set Speed to -5.
  3. الـ Catching: زود الـ Script ده: If <touching [Collector]?> يبقى change Score by 1 وشغل صوت (Sound)، ورجع الـ Idea دي تطلع فوق تاني.
  4. زيادة الصعوبة: عشان تخلي اللعبة أصعب، زود Script منفصل:
    • Forever -> Wait 5 seconds -> Change Speed by -1.
    • ملحوظة: عشان الحاجة بتقع لتحت، فكل ما تخلي الرقم سالب أكتر (-5، -6، -7...) هتنزل أسرع!

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

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

  • الـ Visual Polish: استخدم لون دهبي منور (زي الـ #ECA400) للمبات بتاعتك عشان تظهر بوضوح مع الخلفية الغامقة.
  • الـ Penalty: لو فيه فكرة لمست الأرض (y < -170) قبل ما تلحقها، خلي الـ change Score by -1.
  • أفكار متعددة: دوس Right-click على الـ Idea sprite واعمل "Duplicate". كده بقى عندك حاجتين بيقعوا ومحتاج تلحقهم في نفس الوقت!

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

  1. هل الـ Collector بيتحرك بسلاسة؟
  2. هل الأفكار بتقع من أماكن عشوائية (Random) من فوق؟
  3. هل الـ Score بيزيد لما بتلحق فكرة؟
  4. هل السرعة بتزيد كل ما بتلعب أكتر؟

تسجيل السيشن

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

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


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