جدول المحتويات:

قم بإنشاء أول لعبة سباق لك: 10 خطوات
قم بإنشاء أول لعبة سباق لك: 10 خطوات

فيديو: قم بإنشاء أول لعبة سباق لك: 10 خطوات

فيديو: قم بإنشاء أول لعبة سباق لك: 10 خطوات
فيديو: كيف تصنع لعبة Flappy bird في 20 ثانية !! 2024, يوليو
Anonim
Image
Image
صورة
صورة

إذا كنت قد أجريت بعض ترميز Python وأردت كتابة لعبة قد تكون لديك عبر Pygame Zero.

في هذا البرنامج التعليمي سنكتب لعبة سباق بسيطة.

الخطوة 1: نظرة عامة واسعة

تضيف وحدة Pygame العديد من الوظائف التي تساعدك على كتابة الألعاب في Python.

يذهب Pygame Zero خطوة أخرى إلى الأمام للسماح لك بتخطي العملية المرهقة المتمثلة في إنشاء كل حلقات اللعبة هذه وإعداد هيكل البرنامج الخاص بك.

يعد Pygame Zero خيارًا رائعًا لأي شخص يريد بدء كتابة ألعاب الكمبيوتر على Raspberry Pi أو أي جهاز Linux.

انك سوف تحتاج:

  • الجهاز الذي يعمل بنظام التشغيل Linux OS
  • محرر لكتابة برنامج بيثون
  • لوحة المفاتيح
  • بعض الخيال

الملفات:

github.com/AhmNouira/-Racing-Game

الخطوة 2: المتطلبات الأساسية

أولاً ، سأستخدم الكمبيوتر المحمول الخاص بي مع نظام التشغيل Ubuntu 18.04. ثم سنقوم بتشغيل اللعبة على Raspberry Pi في الخطوة 8.

قبل متابعة هذا البرنامج التعليمي ، تأكد من تسجيل الدخول كمستخدم لديه امتيازات sudo.

تركيب الأنابيب لبايثون 3

ابدأ بتحديث قائمة الحزم باستخدام الأمر التالي:

sudo apt التحديث

استخدم الأمر التالي لتثبيت pip لـ Python 3:

sudo apt install python3-pip

تحقق من التثبيت عن طريق التحقق من إصدار النقطة:

pip3 - الإصدار

تثبيت Pygame Zero

pip3 تثبيت pgzero - المستخدم

سيؤدي هذا أيضًا إلى تثبيت Pygame. حزم Pygame المجمعة مسبقًا

لذا فإن الخطوة الأولى في رحلتك ستكون فتح Python 3 IDLE أو محرر البايثون المفضل لديك.

الخطوة 3: "Hello World" في Pygame Zero

بشكل افتراضي ، تفتح نافذة Pygame Zero بحجم 800 بكسل عرضًا و 600 بكسل ارتفاعًا. يمكنك التخصيص

حجم نافذتك ، هناك متغيرين محددين مسبقًا يمكنك تعيينهما ، إذا قمت بتضمين WIDTH = 700 HIGH = 800.

يوفر Pygame zero وظائف محددة مسبقًا للتعامل مع حلقة اللعبة التي تؤدي عادةً:

وظيفة السحب ()

يمكننا كتابة هذه الوظيفة في برنامجنا بنفس الطريقة التي نحدد بها عادة وظيفة في بايثون.

تتبع Pygame Zero نفس قواعد التنسيق مثل Python ، لذلك ستحتاج إلى الحرص على وضع مسافة بادئة للكود الخاص بك بشكل صحيح.

#! / usr / bin / python3 # اضبط المترجم

استيراد pgzrun # استيراد وحدة pgzero WIDTH = 700 # عرض النافذة HEIGHT = 800 # ارتفاع النافذة def draw (): # pygame zero draw function screen.fill ((128، 128، 128)) # ملء الشاشة بـ RGB شاشة ملونة.draw.text ("Hello World!"، (270، 320)، # رسم "Hello World!" color = (255، 255، 255)، Fontize = 40) pgzrun.go ()

بادئ ذي بدء ، تحتاج إلى حفظ ملف البرنامج الخاص بك وتسميته.

ثم افتح نافذة طرفية ، وانتقل إلى موقع الملف واكتب:

./.السنة التحضيرية

الخطوة 4: رسم الممثل الخاص بك

رسم الممثل الخاص بك
رسم الممثل الخاص بك

الآن بعد أن أصبح لدينا مجموعة المسرح الخاصة بنا ، يمكننا إنشاء الممثلين لدينا ، فهم كائنات ديناميكية في Pygame Zero.

يمكننا تحميل ممثل عن طريق كتابة في الجزء العلوي من البرنامج:

car = Actor ("racecar")

في Pygame Zero ، يجب تخزين صورنا في دليل يسمى الصور بجوار ملف برنامجنا ، لذلك سيبحث ممثلنا عن ملف صورة في مجلد الصور يسمى racecar.png. قد يكون ملف GIF أو-j.webp

يمكنك ضبط موضعه على الشاشة بكتابة:

car.pos = 350 ، 560

بعد ذلك في دالة draw () الخاصة بنا ، يمكننا الكتابة

car.draw () # ارسم سيارة السباق الخاصة بنا في موضعها المحدد

سيكون البرنامج الكامل كالتالي:

#! / usr / bin / python3

استيراد pgzrun WIDTH = 700 # عرض النافذة HEIGHT = 800 # ارتفاع نافذة السيارة = الممثل ("racecar") car.pos = 350 ، 560 def draw (): # pygame zero draw function screen.fill ((128، 128 ، 128)) # ملء الشاشة برسم السيارة () pgzrun.go ()

اختبر البرنامج الخاص بك للتأكد من أن هذا يعمل.

الخطوة 5: السيطرة على الممثل

السيطرة على الممثل
السيطرة على الممثل

بمجرد رسم سيارتنا على الشاشة ، فإن المرحلة التالية هي تمكين اللاعب من تحريكها.

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

وظيفة التحديث ()

يتم فحص هذه الوظيفة باستمرار أثناء تشغيل اللعبة.

نحتاج إلى كتابة بعض التعليمات البرمجية لاكتشاف ضغطات المفاتيح على مفاتيح الأسهم وأيضًا لفعل شيء حيال ذلك.

لذلك سنضيف هذه الوظيفة إلى برنامجنا

تحديث def ():

if keyboard.left: car.x - = 2 if keyboard. right: car.x + = 2 if keyboard.up: car.y - = 2 if keyboard.down: car.y + = 2

ستعمل سطور الكود هذه على تحريك ممثل السيارة إلى اليسار واليمين والأمام والخلف.

الخطوة السادسة: بناء المسار

بناء المسار
بناء المسار

الآن بعد أن أصبح لدينا سيارة يمكننا توجيهها ، نحتاج إلى مسار لها للقيادة عليها.

سنقوم ببناء مسارنا من الممثلين ، صف واحد في كل مرة. سنحتاج إلى عمل بعض القوائم لتتبع الجهات الفاعلة التي أنشأناها.

سنحتاج أيضًا إلى إعداد بعض المتغيرات الإضافية للمسار.

ثم دعونا ننشئ وظيفة جديدة تسمى makeTrack () ، ستضيف الوظيفة ممثل مسار واحد على اليسار والآخر على اليمين ، وكلاهما يستخدم صورة bare-p.webp

trackLeft = # قائمة لتخزين الحواجز اليسرى

trackRight = # قائمة لتخزين الحواجز اليمنى trackCount = 0 # حساب عدد الحواجز trackPosition = 350 trackWidth = 150 # العرض بين الحواجز اليمنى واليسرى def makeTrack (): # وظيفة لجعل حاجزًا واحدًا في المسار العالمي الأيمن والأيسر ، trackLeft، trackRight، trackPosition، trackWidth trackLeft.append (الممثل ("bare"، pos = (trackPosition-trackWidth، 0))) trackRight.append (الممثل ("bare"، pos = (trackPosition + trackWidth، 0))) المسار + = 1

الشيء التالي الذي يتعين علينا القيام به هو تحريك أقسام التعقب أسفل الشاشة باتجاه السيارة.

دعنا نكتب وظيفة جديدة تسمى updateTrack () ، يتم تحديث هذه الوظيفة حيث ستظهر كتل المسار. يتم إنشاء أجزاء المسار بأرقام عشوائية بحيث تختلف كل مسرحية.

trackDriction = خطأ

SPEED = 4 # يعين سرعة اللعبة من Randint استيراد عشوائي # استيراد فئة randint من تحديث وحدة عشوائية def updateTrack (): global trackCount ، trackPosition ، trackDirection ، trackWidth ، SPEED b = 0 أثناء b 32: if trackDirection == False: trackPosition + = 16 if trackDirection == True: trackPosition - = 16 if randint (0، 4) == 1: trackDirection = not trackDirection if trackPosition> 700 - trackWidth: trackDirection = True if trackPosition < trackWidth: trackDirection = False makeTrack () # أنشئ مسارًا جديدًا أعلى الشاشة

يرجى الرجوع إلى الملف المضغوط أدناه المسمى "RaceGameDemo".

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

الخطوة 7: تحطم السيارة

حادث سيارة
حادث سيارة
حادث سيارة
حادث سيارة
حادث سيارة
حادث سيارة

نحن بحاجة للتأكد من أن سيارتنا لا تلمس الممثلين في المسار.

قد نقوم أيضًا باختبار الاصطدامات باستخدام الأسلوب Colliderect () في وظيفة updateTrack () الخاصة بنا.

في هذه اللعبة ، سيكون لدينا ثلاث حالات مختلفة للعبة مخزنة في لعبتنا المتغيرة:

  • gameStatus == 0 # اللعبة قيد التشغيل
  • gameStatus == 1 # حادث سيارة
  • gameStatus == 2 # انتهت اللعبة

سنحتاج إلى تغيير وظيفة draw () ووظيفة update () الخاصة بنا للاستجابة لمتغير gameStatus.

اللمسات الأخيرة

كل ما علينا فعله الآن هو عرض شيء ما إذا تم ضبط gameStatus على 1 أو 2 ، على سبيل المثال ، يجب أن نعرض علامة حمراء

العلم ، إذا تحطمت السيارة. يمكننا القيام بذلك باستخدام الكود أدناه:

screen.blit ("redflag"، (230 ، 230))

لمعرفة ما إذا كانت السيارة قد وصلت إلى النهاية ، يجب أن نحسب عدد أقسام المسار التي تم إنشاؤها ، ثم ربما عندما نصل إلى 200 ، اضبط حالة اللعبة على 2. ثم اعرض العلم المتقلب:

screen.blit ("finishflag"، (230 ، 230))

سنعرض أيضًا بعض النصوص على الشاشة مثل النتيجة الحالية للعبة.

ألقِ نظرة على قائمة الرموز الكاملة لترى كيف يتناسب كل ذلك معًا.

الخطوة 8: قم بتشغيل اللعبة على Raspberry Pi

قم بتشغيل اللعبة على Raspberry Pi
قم بتشغيل اللعبة على Raspberry Pi
قم بتشغيل اللعبة على Raspberry Pi
قم بتشغيل اللعبة على Raspberry Pi

على Raspberry Pi تم تثبيت pgzero افتراضيًا منذ إصدار Raspbian Jessie في سبتمبر 2015.

ما عليك سوى تحديث Raspberry Pi باستخدام الأمر:

sudo apt-get update

انتقل إلى موقع الملف الخاص بك واكتب في Terminal.

pgzrun.py

الخطوة 9: هل فزت؟

هل فزت؟
هل فزت؟

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

الخطوة 10: الخاتمة

يعد Pygame Zero خيارًا رائعًا لمن يريد البدء في كتابة ألعاب الكمبيوتر.

إذا كان لديك أي سؤال بالطبع يمكنك ترك تعليق. لمعرفة المزيد عن أعمالي ، يرجى زيارة قناتي:

myYouTube

حساب التويتر الخاص بي

myLinkedin

شكرًا على قراءة هذه التعليمات ^^ وأتمنى لك يومًا سعيدًا. اراك لاحقا. أحمد نويرة.

موصى به: