قم بإنشاء تحية لـ Excitebike باستخدام Python

قم بإنشاء تحية لـ Excitebike باستخدام Python

Excitebike هي لعبة تمرير جانبي حيث يمكنك التنقل بدراجة نارية فوق القفزات والمناورة حول العوائق والسرعة نحو خط النهاية.





أطلقت Nintendo لأول مرة لعبة سباق BMX هذه لـ NES. من هناك ، قامت الشركة بتحديث Excitebike وأصدرته على N64 ، وفي النهاية ، Wii.





لم تعد توجد العديد من وحدات تحكم NES ، مما يجعل لعب Excitebike مرة أخرى صعبًا. بفضل بعض المعجبين الرجعيين في مجلة Wireframe ، يمكن لمقتطف من كود Python إعادة إنشاء NES الكلاسيكي هذا لساعات من المرح على Raspberry Pi أو الكمبيوتر الشخصي المنزلي.





إذا لم تكن صديقًا لشخص ما على Facebook ، فيمكنك إعادة تكوين صداقته معه
اجعل فيديو اليوم

الحصول على الكود والإعداد

على الرغم من أنه يمكنك استخدام nano أو vim لتحرير كود Python الخاص بك ، إلا أنك سترغب في الاستفادة من الميزات الكاملة محرر نصوص أو IDE .

ستحتاج إلى تثبيت Pygame Zero لدعم الميزات المضمنة في هذا التكريم لـ Excitebike. تحتوي Pygame Zero على وحدات Python لمنشئي الألعاب للتركيز عليها دون الحاجة إلى تكرار الأسس البسيطة.



إذا لم يكن لديك python3 مثبتًا على جهاز الكمبيوتر الخاص بك ، فيمكنك ذلك قم بتنزيل أحدث إصدار من بايثون مباشرة. سترغب أيضًا في ذلك تأكد من تثبيت PIP جدا.

مع تثبيت أحدث إصدار من Python و PIP ، افتح محطة PowerShell أو Linux واكتب:





pip3 install pgzero 

أخيرًا ، ستحتاج إلى التقاط نسخة من كود Python من مستودع GitHub لمجلة Wireframe. اكتب الأمر التالي في المحطة:

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

بدلا من ذلك ، يمكنك تنزيل الرمز المضغوط مباشرة من صفحة Wireframe GitHub.





تحطيم المدونة

لفهم ما يفعله الكود ، قم أولاً بتشغيل لعبة Excitebike. افعل ذلك بالانتقال إلى الكود المصدري ثم تشغيله باستخدام Pygame Zero:

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

يمكنك بعد ذلك فتح ملف exitebike.py باستخدام محرر نصوص لعرض الكود.

  مقتطف رمز excitebike بيثون

ال سحب ترسم الوظيفة الخلفية أثناء تحرك صورة الدراجة. أ ' يقضي 'يشير إلى كتلة مرسومة على الشاشة. الكلمة ،' معرفتي،' يشير إلى صورة الخلفية (يتم ربط الصور بكتلة الخلفية بفضل وحدات Pygame Zero المستوردة).

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

ستلاحظ أيضًا حسابات وقت الدورة والدورة الأخيرة (يتم تمثيلها بواسطة عداد الوقت في الجزء السفلي من الشاشة). يحسب وقت الدورة باستمرار الفرق بين الضغط الأولي على مفتاح السهم الأيمن (وقت البدء) والوقت الحالي.

اللفة الأخيرة هي عملية حسابية مماثلة. بدلاً من وقت البدء ، يتم حساب الوقت من مرور الدراجة النارية إلى موضع مسار محدد مسبقًا (يُشار إليه باسم المسار <-4800 في الكود). العناصر أدناه بين الاقتباسات تمثل صورة.

يرسم هذا الرمز كتل الصور على الشاشة في فترات زمنية معينة ومواضع معينة على الشاشة. يبلغ عرض صورة الحشد المقدمة 100 بكسل فقط. ومع ذلك ، يخبر الكود أدناه الكمبيوتر بموعد رسم الصورة بحيث تظهر كما لو كان هناك حشد محاكاة خلف الدراجة النارية أثناء تحركها.

كيفية صنع هوائي عالي الوضوح

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

بمجرد إنشاء نسخة احتياطية من كود Python ، حاول تغيير الأرقام أدناه لمعرفة ما يحدث للصخور على الشاشة!

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

هل تريد استبدال دراجتك النارية بشاحنة Monster أو ذات أربع عجلات أو مركبة أخرى؟ ربما تريد أن تسابق وحيد القرن إلى خط النهاية؟

كل ما عليك فعله هو رسم صورة بحجم 50 × 50 بكسل (بخلفية شفافة). ثم ضع هذا الملف (picture.png) في ' الصور مجلد (داخل ملف مصدر التعليمات البرمجية excitebike مجلد). سترغب في إنشاء صورتين (إحداهما بارتفاع متزايد قليلاً) لإضافة بعض الواقعية. كل ما عليك فعله هو تغيير الإشارة إلى ' افعلها هنا:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  لعبة excitebike الثعبان مع الشاحنة

تأكد أيضًا من إجراء بحث واستبدال الإجراء باسم الصورة (بدون امتداد الصورة).

checkBikeRamp () هي الوظيفة التي تقوم بالعمل لحساب المحور Y بحيث تصعد دراجتك النارية (أو شاحنتك) المنحدر (وتحصل على بعض الهواء الخطير إذا كنت محظوظًا). ال لوحة المفاتيح و لوحة المفاتيح يتم تحديد المعلمات في تحديث() وظيفة.

أفضل لوحة مفاتيح لاسلكية وماوس

تخبر بتات الشفرة الكمبيوتر بإبطاء الدراجة النارية أو تسريعها (اعتمادًا على المفتاح الذي يضغطه المستخدم على لوحة المفاتيح). الترجمة: كلما تحركت دراجتك النارية بشكل أسرع ، زاد عدد المحور Y (أو القفزة الكبيرة جدًا).

بشكل مستعرض ، فإن ملف on_key_down (مفتاح) وظيفة سوف ترسل دراجتك النارية في هبوط.

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

ال muckLane ستؤدي المعلمة إلى إبطاء دراجتك النارية باستخدام الحساب التالي:

muckLane = int((bike.laneY-375)/50)+1

يحدد السطر 66 من الكود وقت عرض صورة 'الوحل' على الشاشة. الآن بعد أن عرف الكمبيوتر متى ستمر دراجتك النارية فوق الوحل ، فسوف تبطئ سرعة دراجتك النارية إلى النصف وأنت تتحرك فوق الوحل على المسار. قم بتغيير قيمة muckLane من / 50 إلى / 25 أو / 75 لمعرفة ما سيحدث بعد ذلك.

المتسابقون (مهم ، مبرمجو بايثون)! ابدأ محركاتك!

حتى لو لم تكن مرتاحًا لبرمجة هذا التكريم لـ Excitebike من البداية ، فإن هذا الكود لا يزال بداية رائعة. من خلال تعديلها وإدراك التأثير البصري للتغييرات ، يمكنك تعلم الكثير. هل ستحاول إضافة المزيد من الميزات أو متسابقي الذكاء الاصطناعي في لعبتك؟ أذهب خلفها !

مع القليل من ممارسة Python تحت حزامك ، هناك فكرة أخرى يمكنك تجربتها وهي إضافة مستويات مختلفة بمجرد اجتيازك لخط النهاية بعد 4 أو 5 مرات. كذلك ، قد ترغب في إضافة مكافآت للمركز الأول والثاني والثالث. إذا كنت في المركز الأول ، أضف ملفًا صوتيًا يشجع الجمهور أيضًا! هناك الكثير من الاحتمالات.

عندما تكون سعيدًا بتحسينات Excitebike ، فلماذا لا تتعامل مع إنشاء لعبة مغامرات نصية؟ هناك الكثير من القطع المختلفة التي ستضمن أنك تتعلم شيئًا مثيرًا لساعات أو أيام أو حتى أسابيع!