Excitebike هي لعبة تمرير جانبي حيث يمكنك التنقل بدراجة نارية فوق القفزات والمناورة حول العوائق والسرعة نحو خط النهاية.
أطلقت Nintendo لأول مرة لعبة سباق BMX هذه لـ NES. من هناك ، قامت الشركة بتحديث Excitebike وأصدرته على N64 ، وفي النهاية ، Wii.
لم تعد توجد العديد من وحدات تحكم NES ، مما يجعل لعب Excitebike مرة أخرى صعبًا. بفضل بعض المعجبين الرجعيين في مجلة Wireframe ، يمكن لمقتطف من كود Python إعادة إنشاء NES الكلاسيكي هذا لساعات من المرح على Raspberry Pi أو الكمبيوتر الشخصي المنزلي.
الحصول على الكود والإعداد
على الرغم من أنه يمكنك استخدام nano أو vim لتحرير كود Python الخاص بك ، إلا أنك سترغب في الاستفادة من الميزات الكاملة محرر نصوص أو IDE.
ستحتاج إلى تثبيت Pygame Zero لدعم الميزات المضمنة في هذا التكريم لـ Excitebike. تحتوي Pygame Zero على وحدات Python لمنشئي الألعاب للتركيز عليها دون الحاجة إلى تكرار الأسس البسيطة.
إذا لم يكن لديك python3 مثبتًا على جهاز الكمبيوتر الخاص بك ، فيمكنك ذلك قم بتنزيل أحدث إصدار من بايثون مباشرة. سترغب أيضًا في ذلك تأكد من تثبيت PIP أيضاً.
مع تثبيت أحدث إصدار من Python و PIP ، افتح محطة PowerShell أو Linux واكتب:
نقطة 3 ثَبَّتَ pgzero
أخيرًا ، ستحتاج إلى التقاط نسخة من كود Python من مستودع GitHub لمجلة Wireframe. اكتب الأمر التالي في المحطة:
شخص سخيف استنساخ https://github.com/Wireframe-Magazine/Wireframe-66.git
بدلا من ذلك ، يمكنك تنزيل الرمز المضغوط مباشرة من صفحة Wireframe GitHub.
تحطيم المدونة
لفهم ما يفعله الكود ، قم أولاً بتشغيل لعبة Excitebike. افعل ذلك بالانتقال إلى الكود المصدري ثم تشغيله باستخدام Pygame Zero:
قرص مضغوط Wireframe-66 /مصدر-الرمز- excitebike /
pgzrunexitebike.السنة التحضيرية
يمكنك بعد ذلك فتح ملف exitebike.py باستخدام محرر نصوص لعرض الكود.
ال يرسم ترسم الوظيفة الخلفية أثناء تحرك صورة الدراجة. أ "بليت"يشير إلى كتلة مرسومة على الشاشة. الكلمة، "خلفية،" يشير إلى صورة الخلفية (يتم ربط الصور بكتلة الخلفية بفضل وحدات Pygame Zero المستوردة).
defيرسم():
screen.blit ("خلفية", (0, 0))
drawTrack ()
دراجة هوائية.يرسم()
screen.draw.text ("وقت الدورة: "+ str (int (time.time () - startTime))، (20، 555)، color = (255،255،255)، حجم الخطوط = 50)
screen.draw.text ("المرحلة الاخيرة: "+ str (lastLap) ، topright = (780 ، 555) ، اللون = (255،255،255) ، حجم الخطوط = 50)
ستلاحظ أيضًا حسابات وقت الدورة والدورة الأخيرة (يتم تمثيلها بواسطة عداد الوقت في الجزء السفلي من الشاشة). يحسب وقت الدورة باستمرار الفرق بين الضغط الأولي على مفتاح السهم الأيمن (وقت البدء) والوقت الحالي.
اللفة الأخيرة هي عملية حسابية مماثلة. بدلاً من وقت البدء ، يتم حساب الوقت من مرور الدراجة النارية إلى موضع مسار محدد مسبقًا (يُشار إليه باسم المسار
يرسم هذا الرمز كتل الصور على الشاشة في فترات زمنية معينة ومواضع معينة على الشاشة. يبلغ عرض صورة الحشد المقدمة 100 بكسل فقط. ومع ذلك ، يخبر الكود أدناه الكمبيوتر بموعد رسم الصورة بحيث تظهر كما لو كان هناك حشد محاكاة خلف الدراجة النارية أثناء تحركها.
يتم عرض صور الصخور على الشاشة في جزأين. يعمل السطران الثاني والثالث من التعليمات البرمجية ، أدناه ، معًا لمحاكاة المشهد بطريقة مرتبة.
بمجرد إنشاء نسخة احتياطية من كود Python ، حاول تغيير الأرقام أدناه لمعرفة ما يحدث للصخور على الشاشة!
screen.blit ("الحشد 1"، ((t * 100) + trackOffset-100، 0))
screen.blit ("صخرة 1"، ((t * 100) + trackOffset-100، 270))
screen.blit ("صخرة 1"، ((t * 100) + trackOffset-50، 270))
هل تريد استبدال دراجتك النارية بشاحنة Monster أو ذات أربع عجلات أو مركبة أخرى؟ ربما تريد أن تسابق وحيد القرن إلى خط النهاية؟
كل ما عليك فعله هو رسم صورة بحجم 50 × 50 بكسل (بخلفية شفافة). ثم ضع هذا الملف (picture.png) في "الصورمجلد (داخل ملف مصدر التعليمات البرمجية excitebike مجلد). سترغب في إنشاء صورتين (إحداهما بارتفاع متزايد قليلاً) لإضافة بعض الواقعية. كل ما عليك فعله هو تغيير الإشارة إلى "دراجة 0 ' هنا:
الدراجة = الممثل ('دراجة 0'، المركز = (150 ، 350) ، المرساة = ('مركز', 'قاع'))
تأكد أيضًا من إجراء بحث واستبدال الإجراء باسم الصورة (بدون امتداد الصورة).
checkBikeRamp () هي الوظيفة التي تقوم بالعمل لحساب المحور Y بحيث ترتفع دراجتك النارية (أو شاحنتك) إلى المنحدر (وتحصل على بعض الهواء الخطير إذا كنت محظوظًا). ال لوحة المفاتيح و لوحة المفاتيح يتم تحديد المعلمات في تحديث() وظيفة.
تخبر بتات الشفرة الكمبيوتر بإبطاء الدراجة النارية أو تسريعها (اعتمادًا على المفتاح الذي يضغطه المستخدم على لوحة المفاتيح). الترجمة: كلما تحركت دراجتك النارية بشكل أسرع ، زاد عدد المحور Y (أو القفزة الكبيرة جدًا).
بشكل مستعرض ، فإن ملف on_key_down (مفتاح) وظيفة سوف ترسل دراجتك النارية في هبوط.
إذا كان key.name == "تحت":
اتجاه الدراجة = 1
مسار الدراجة Y = حد(bike.laneY + 50، 375، 525)
bike.y + = اتجاه الدراجة
ال muckLane ستؤدي المعلمة إلى إبطاء دراجتك النارية باستخدام الحساب التالي:
muckLane = int((bike.laneY-375)/50)+1
يحدد السطر 66 من الكود وقت عرض صورة "الوحل" على الشاشة. الآن بعد أن عرف الكمبيوتر متى ستمر دراجتك النارية فوق الوحل ، فسوف تبطئ سرعة دراجتك النارية إلى النصف وأنت تتحرك فوق الوحل على المسار. قم بتغيير قيمة muckLane من / 50 إلى / 25 أو / 75 لمعرفة ما سيحدث بعد ذلك.
المتسابقون (مهم ، مبرمجو بايثون)! ابدأ محركاتك!
حتى لو لم تكن مرتاحًا لبرمجة هذا التكريم لـ Excitebike من البداية ، فإن هذا الكود لا يزال بداية رائعة. من خلال تعديلها وإدراك التأثير البصري للتغييرات ، يمكنك تعلم الكثير. هل ستحاول إضافة المزيد من الميزات أو متسابقي الذكاء الاصطناعي في لعبتك؟ أذهب خلفها !
مع القليل من ممارسة Python تحت حزامك ، هناك فكرة أخرى يمكنك تجربتها وهي إضافة مستويات مختلفة بمجرد اجتيازك لخط النهاية بعد 4 أو 5 مرات. كذلك ، قد ترغب في إضافة مكافآت للمركز الأول والثاني والثالث. إذا كنت في المركز الأول ، أضف ملفًا صوتيًا يشجع الجمهور أيضًا! هناك الكثير من الاحتمالات.
عندما تكون سعيدًا بتحسينات Excitebike ، فلماذا لا تتعامل مع إنشاء لعبة مغامرات نصية؟ هناك الكثير من القطع المختلفة التي ستضمن أنك تتعلم شيئًا مثيرًا لساعات أو أيام أو حتى أسابيع!