تحكّم في Pishi باستخدام كتفيك في Scratch
استخدم ميل كتفيك لتحريك Pishi إلى اليسار واليمين، والتقاط التفاح، وتجنّب قطع الدونات، وجمع أكبر عدد ممكن من النقاط قبل انتهاء الوقت.
مستوى الصعوبة
متوسط
الوقت التقديري
20–35 دقيقة
الإضافة
POSENET
📖 ما الذي ستتعلّمه
- كيفية استخدام PoseNet لاكتشاف جسم الشخص
- كيفية قياس الزاوية بين الكتف الأيسر والكتف الأيمن
- كيفية التحكّم في كائن Scratch باستخدام حركة الجسم
- كيفية تغيير سرعة الحركة بناءً على ميل الكتفين
- كيفية إنشاء عناصر ساقطة بمواضع وسرعات عشوائية
- كيفية استخدام المتغيّرات المشتركة للتحكّم في لعبة محددة الوقت
يتتبّع PoseNet نقاطًا رئيسية في الجسم، مثل الكتفين والمرفقين والمعصمين والوركين والركبتين والكاحلين. في هذا المشروع، تتحكّم الزاوية بين الكتفين في حركة Pishi الأفقية.
🧰 ما الذي تحتاج إليه
- جهاز كمبيوتر مزوّد بكاميرا تعمل
- Chrome أو Firefox أو Edge أو متصفح حديث آخر يعتمد على Chromium
- Scratch على موقع Pishi.ai (ابدأ مشروعًا جديدًا)
- إضافة PoseNet (اطّلع على دليل المساعدة)
- كائن Pishi
- كائن Apple
- كائن Donut
- المتغيّرات التالية:
- score (النقاط)
- time (الوقت)
- angle (الزاوية)
- apple speed (سرعة التفاحة)
- donut speed (سرعة الدونات)
استخدم إضاءة جيدة، واحرص على أن يكون الجزء العلوي من جسمك ظاهرًا أمام الكاميرا حتى يتمكّن PoseNet من اكتشاف كلا الكتفين بوضوح.
🛠️ أنشئ مشروعك
1. إعداد Pishi والتحكّم باستخدام الكتفين
- score (النقاط)
- time (الوقت)
- angle (الزاوية)
- اجعل score مساوياً لـ 0
- انقل Pishi إلى الموضع x: 0 و y: -130
- صفّر المؤقت (Reset the timer)
- استمر في اللعبة حتى يصبح المؤقت أكبر من 20
- إذا كان angle > 3، غيّر الموضع x بمقدار 5 + angle
- If angle إذا كان angle < -3، غيّر الموضع x بمقدار -5 + angle
2. إضافة التفاحة المتساقطة
- apple speed (سرعة التفاحة)
- اجعل time مساوياً لـ 0
- كرر حتى time = FINISH
- ضع التفاحة في موضع x عشوائي أعلى المنصة (Stage)
- أظهر التفاحة
- اجعل apple speed مساوياً لقيمة عشوائية من -10 إلى -5
- يصبح الموضع y الخاص بها أقل من -160، أو
- time = FINISH
- زِد score بمقدار 1
- شغّل الصوت Chomp
- أخفِ التفاحة
- حركها لأسفل لكي ينتهي السقوط الحالي
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.
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.
🚀 جرب مشروعك!
انقر على العلم الأخضر واسمح بالوصول إلى الكاميرا.
ثم:
- قف في مكان يمكن للكاميرا أن ترى فيه الجزء العلوي من جسمك بوضوح.
- احرص على إبقاء كلا كتفيك ظاهرين أمام الكاميرا.
- ارفع أحد كتفيك واخفض الآخر لتحريك Pishi.
- مِل أكثر لجعل Pishi يتحرك بشكل أسرع.
- التقط التفاح لزيادة قيمة score الخاصة بك.
- تجنب الـ donuts حتى لا تفقد النقاط.
- حاول الحصول على أعلى score قبل أن ينتهي مؤقت الـ 20 ثانية.
🤖 كيف يعمل؟
يكتشف 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.
💡 اجعله أفضل!
- ارفع كلتا اليدين لتفعيل درع
استخدم مواضع Y لكلا المعصمين والكتفين. عندما يكون كلا المعصمين أعلى من الكتفين المقابلين لهما:
- فعّل درعًا
- امنع الدونات من تقليل score
- غيّر مظهر Pishi
- شغّل صوت تعزيز القوة
- استخدم يداً واحدة مرفوعة للتحكم في الأشياء المتساقطة
اكتشف ما إذا كان المعصم الأيسر أو الأيمن أعلى من كتفه. على سبيل المثال:
- ارفع اليد اليسرى لإبطاء الدونات
- ارفع اليد اليمنى لإبطاء التفاح
- اخفض كلتا اليدين للعودة إلى السرعة العادية
- انحنِ لتجنب عقبة طائرة
أضف عقبة تتحرك أفقياً عبر المنصة (Stage). استخدم الموضع Y للأنف أو الكتفين لاكتشاف متى ينحني اللاعب. عندما ينحني اللاعب للأسفل:
- اجعل Pishi ينكمش لفترة وجيزة
- حرك Pishi لأسفل
- اسمح للعقبة بالمرور من فوقه
- إضافة قوة قفز
استخدم المواضع Y للكاحلين، أو الركبتين، أو الوركين، أو الكتفين لاكتشاف القفزة. عندما يقفز اللاعب:
- اجعل Pishi يقفز
- اجمع كل التفاح القريب
- تجنب عقبة على مستوى الأرض
- فعّل مكافأة مؤقتة على score
- إضافة مكافأة التوازن على ساق واحدة
استخدم النقاط الأساسية (keypoints) للكاحل أو الركبة لاكتشاف ما إذا كانت إحدى الساقين مرفوعة. بينما يتوازن اللاعب على ساق واحدة:
- يعطي التفاح نقطتين
- تتساقط الدونات بشكل أسرع
- يزداد مؤشر المكافأة
- أنشئ مجموعات من الوضعيات
اجمع بين عدة شروط لـ PoseNet لتشغيل حركات خاصة. أمثلة:
- كلتا اليدين للأعلى ← درع
- اليد اليسرى للأعلى ← تجميد الدونات
- اليد اليمنى للأعلى ← جذب التفاح
- الانحناء للأسفل ← تجنب العقبات الطائرة
- رفع ساق واحدة ← وضع الـ score المضاعف
- تمديد الذراعين للجانبين ← مسح جميع الدونات
🔗 شارك إبداعك
- أسماك وقمامة
- نجوم وكويكبات
- طعام صحي وطعام غير صحي
- كنز وصخور متساقطة
