تحكّم في Pishi باستخدام كتفيك في Scratch

استخدم ميل كتفيك لتحريك Pishi إلى اليسار واليمين، والتقاط التفاح، وتجنّب قطع الدونات، وجمع أكبر عدد ممكن من النقاط قبل انتهاء الوقت.

مستوى الصعوبة
متوسط

🕒

الوقت التقديري
20–35 دقيقة

🧩

الإضافة

POSENET

Control Pishi with Your Shoulders in Scratch - stage

📖 ما الذي ستتعلّمه

  • كيفية استخدام PoseNet لاكتشاف جسم الشخص
  • كيفية قياس الزاوية بين الكتف الأيسر والكتف الأيمن
  • كيفية التحكّم في كائن Scratch باستخدام حركة الجسم
  • كيفية تغيير سرعة الحركة بناءً على ميل الكتفين
  • كيفية إنشاء عناصر ساقطة بمواضع وسرعات عشوائية
  • كيفية استخدام المتغيّرات المشتركة للتحكّم في لعبة محددة الوقت

 

يتتبّع PoseNet نقاطًا رئيسية في الجسم، مثل الكتفين والمرفقين والمعصمين والوركين والركبتين والكاحلين. في هذا المشروع، تتحكّم الزاوية بين الكتفين في حركة Pishi الأفقية.

🧰 ما الذي تحتاج إليه

  • جهاز كمبيوتر مزوّد بكاميرا تعمل
  • Chrome أو Firefox أو Edge أو متصفح حديث آخر يعتمد على Chromium
  • Scratch على موقع Pishi.ai (ابدأ مشروعًا جديدًا)
  • إضافة PoseNet (اطّلع على دليل المساعدة)
  • كائن Pishi
  • كائن Apple
  • كائن Donut
  • المتغيّرات التالية:
    • score (النقاط)
    • time (الوقت)
    • angle (الزاوية)
    • apple speed (سرعة التفاحة)
    • donut speed (سرعة الدونات)

استخدم إضاءة جيدة، واحرص على أن يكون الجزء العلوي من جسمك ظاهرًا أمام الكاميرا حتى يتمكّن PoseNet من اكتشاف كلا الكتفين بوضوح.

🛠️ أنشئ مشروعك

1

1. إعداد Pishi والتحكّم باستخدام الكتفين

ضع Pishi بالقرب من الجزء السفلي من المنصة (Stage) وأنشئ هذه المتغيرات:
  • score (النقاط)
  • time (الوقت)
  • angle (الزاوية)
عند النقر على العلم الأخضر:
  • اجعل score مساوياً لـ 0
  • انقل Pishi إلى الموضع x: 0 و y: -130
  • صفّر المؤقت (Reset the timer)
  • استمر في اللعبة حتى يصبح المؤقت أكبر من 20
داخل الحلقة، تحقّق أولًا مما إذا كان PoseNet قد اكتشف شخصًا واحدًا على الأقل. بعد ذلك، اضبط angle على: abs of (angle between left shoulder and right shoulder) – 90 يسمح استخدام abs للبرنامج بالعمل سواء أعاد PoseNet زاوية قريبة من 90 أو -90. استخدم نطاقًا محايدًا صغيرًا لمنع الحركة غير المقصودة:
  • إذا كان angle > 3، غيّر الموضع x بمقدار 5 + angle
  • If angle إذا كان angle < -3، غيّر الموضع x بمقدار -5 + angle
يتحكم ميل الكتفين في كل من الاتجاه والسرعة. الميل الأكبر يجعل Pishi يتحرك بشكل أسرع. باستخدام هذا الإعداد، يتحرك Pishi نحو الكتف الأعلى من الآخر. أثناء تشغيل اللعبة، اجعل time باستمرار مساوياً لقيمة المؤقت (timer) الحالية في Scratch.
shoulder-controlled pishi posenet scratch script - Scratch Blocks
انقر على الصورة لتكبيرها
2

2. إضافة التفاحة المتساقطة

أضف كائناً (sprite) باسم Apple وأنشئ المتغير:
  • apple speed (سرعة التفاحة)
عند النقر على العلم الأخضر:
  • اجعل time مساوياً لـ 0
  • كرر حتى time = FINISH
  • ضع التفاحة في موضع x عشوائي أعلى المنصة (Stage)
  • أظهر التفاحة
  • اجعل apple speed مساوياً لقيمة عشوائية من -10 إلى -5
حرك التفاحة لأسفل حتى:
  • يصبح الموضع y الخاص بها أقل من -160، أو
  • time = FINISH
أثناء تساقط التفاحة، تحقق مما إذا كانت تلامس Pishi. عندما تلامس التفاحة Pishi:
  • زِد score بمقدار 1
  • شغّل الصوت Chomp
  • أخفِ التفاحة
  • حركها لأسفل لكي ينتهي السقوط الحالي
سيقوم التكرار (loop) الخارجي بعد ذلك بوضع التفاحة في موضع عشوائي آخر ويبدأ سقوطاً جديداً.
shoulder controlled pishi posenet scratch script - Scratch Blocks
3

3. إضافة الكعكة المحلاة (Donut) المتساقطة

أضف كائناً (sprite) باسم Donut وأنشئ المتغير:

  • donut speed (سرعة الدونات)

يتبع المقطع البرمجي (script) الخاص بـ Donut نفس بنية المقطع البرمجي الخاص بـ Apple.
عند النقر على العلم الأخضر:

  • اجعل time مساوياً لـ 0
  • كرر حتى time = FINISH
  • ضع الـ donut في موضع x عشوائي أعلى المنصة (Stage)
  • أظهر الـ donut
  • اجعل donut speed مساوياً لقيمة عشوائية من -10 إلى -5

حرك الـ donut لأسفل حتى:

  • يصبح الموضع y الخاص بها أقل من -160، أو
  • time = FINISH

أثناء تساقط الـ donut، تحقق مما إذا كانت تلامس Pishi.
عندما تلامس الـ donut شخصية Pishi:

  • أنقص score بمقدار 1
  • شغّل الصوت Bite
  • أخفِ الـ donut
  • حركها لأسفل لكي ينتهي السقوط الحالي

الاختلافات الرئيسية عن التفاحة (Apple) هي متغير السرعة، والصوت، وتغيير قيمة الـ score.

shoulder controlled pishi posenet scratch script - Scratch Blocks
4

4. إنهاء اللعبة بعد انتهاء الوقت

After the timer becomes greater than 20 seconds, the main repeat loop ends.

 

Then Pishi:

  • يجعل time مساوياً لـ FINISH
  • يقول Time’s up (انتهى الوقت)
  • يشغّل الصوت Meow

يستخدم كل من المقطعين البرمجيين لـ Apple و Donut ما يلي:

  • كرر حتى time = FINISH
  • تعيين time إلى FINISH يخبر كلا الكائنين المتساقطين بالتوقف.

The Apple and Donut also set time to 0 when the green flag is clicked.

 

This prevents either sprite from immediately leaving its loop if it starts before Pishi resets the value from a previous game.

shoulder-controlled pishi posenet scratch script - Scratch Blocks

🚀 جرب مشروعك!

انقر على العلم الأخضر واسمح بالوصول إلى الكاميرا.
ثم:

  1. قف في مكان يمكن للكاميرا أن ترى فيه الجزء العلوي من جسمك بوضوح.
  2. احرص على إبقاء كلا كتفيك ظاهرين أمام الكاميرا.
  3. ارفع أحد كتفيك واخفض الآخر لتحريك Pishi.
  4. مِل أكثر لجعل Pishi يتحرك بشكل أسرع.
  5. التقط التفاح لزيادة قيمة score الخاصة بك.
  6. تجنب الـ donuts حتى لا تفقد النقاط.
  7. حاول الحصول على أعلى score قبل أن ينتهي مؤقت الـ 20 ثانية.
Control Pishi with Your Shoulders in Scratch - stage

🤖 كيف يعمل؟

يكتشف PoseNet مواضع كتفي اللاعب الأيسر والأيمن.


يتبع المشروع هذه العملية:

كتفاك

يكتشف PoseNet النقطتين المرجعيتين للكتفين (keypoints)

تقيس الإضافة الزاوية بينهما

يستخدم Scratch الزاوية المطلقة ويطرح منها 90


تتحكم النتيجة في اتجاه وسرعة Pishi


يلتقط Pishi التفاح ويتجنب الـ donuts

The Apple and Donut sprites repeatedly appear at random horizontal positions and fall from the top of the Stage.

 

After they are caught or leave the Stage, they return to the top at a new random position.

💡 اجعله أفضل!

  1. ارفع كلتا اليدين لتفعيل درع استخدم مواضع Y لكلا المعصمين والكتفين. عندما يكون كلا المعصمين أعلى من الكتفين المقابلين لهما:
    • فعّل درعًا
    • امنع الدونات من تقليل score
    • غيّر مظهر Pishi
    • شغّل صوت تعزيز القوة
    يقدم هذا تتبع المعصمين مع إبقاء ميل الكتفين كأداة تحكم رئيسية.
  2. استخدم يداً واحدة مرفوعة للتحكم في الأشياء المتساقطة اكتشف ما إذا كان المعصم الأيسر أو الأيمن أعلى من كتفه. على سبيل المثال:
    • ارفع اليد اليسرى لإبطاء الدونات
    • ارفع اليد اليمنى لإبطاء التفاح
    • اخفض كلتا اليدين للعودة إلى السرعة العادية
    يسمح هذا للاعب بالتحكم في أجزاء مختلفة من اللعبة بوضعيات جسم منفصلة.
  3. انحنِ لتجنب عقبة طائرة أضف عقبة تتحرك أفقياً عبر المنصة (Stage). استخدم الموضع Y للأنف أو الكتفين لاكتشاف متى ينحني اللاعب. عندما ينحني اللاعب للأسفل:
    • اجعل Pishi ينكمش لفترة وجيزة
    • حرك Pishi لأسفل
    • اسمح للعقبة بالمرور من فوقه
    يضيف هذا حركة الجسم الرأسية إلى اللعبة.
  4. إضافة قوة قفز استخدم المواضع Y للكاحلين، أو الركبتين، أو الوركين، أو الكتفين لاكتشاف القفزة. عندما يقفز اللاعب:
    • اجعل Pishi يقفز
    • اجمع كل التفاح القريب
    • تجنب عقبة على مستوى الأرض
    • فعّل مكافأة مؤقتة على score
    يوضح هذا قدرات PoseNet في تتبع الجزء السفلي من الجسم.
  5. إضافة مكافأة التوازن على ساق واحدة استخدم النقاط الأساسية (keypoints) للكاحل أو الركبة لاكتشاف ما إذا كانت إحدى الساقين مرفوعة. بينما يتوازن اللاعب على ساق واحدة:
    • يعطي التفاح نقطتين
    • تتساقط الدونات بشكل أسرع
    • يزداد مؤشر المكافأة
    يحول هذا المشروع إلى تحدي توازن وتنسيق.
  6. أنشئ مجموعات من الوضعيات اجمع بين عدة شروط لـ PoseNet لتشغيل حركات خاصة. أمثلة:
    • كلتا اليدين للأعلى ← درع
    • اليد اليسرى للأعلى ← تجميد الدونات
    • اليد اليمنى للأعلى ← جذب التفاح
    • الانحناء للأسفل ← تجنب العقبات الطائرة
    • رفع ساق واحدة ← وضع الـ score المضاعف
    • تمديد الذراعين للجانبين ← مسح جميع الدونات
    يوضح هذا كيف يمكن للعديد من النقاط الأساسية للجسم أن تعمل معاً لإنشاء أدوات تحكم أكثر تقدماً باستخدام كامل الجسم.

🔗 شارك إبداعك

هل أنهيت مشروعك؟ أضف الكائنات (sprites)، والأصوات، والخلفيات الخاصة بك، وأدوات التحكم الخاصة بـ PoseNet. جرب إنشاء فكرة (theme) مختلفة، مثل:
  • أسماك وقمامة
  • نجوم وكويكبات
  • طعام صحي وطعام غير صحي
  • كنز وصخور متساقطة
ثم شارك مشروعك مع أصدقائك أو زملائك في الفصل.
OPEN PROJECT & REMIX
Scroll to Top