القائمة الرئيسية

الصفحات

طريقة انشاء إطار العمل framework باستخدام "Python-Pygame"

Build game framework with Python Pygame،طريقة انشاء إطار العمل framework باستخدام "Python-Pygame"،طريقة انشاء فريم ورك،أنشئ إطار عمل للعبة باستخدام Python باستخدام وحدة Pygame،Build a game framework،Python using the Pygame module،Build a game framework with Python using the Pygamemodule،Inkscape،Krita،Pinta،kenny.nl،Build a game framework with Python using the Pygame module،أنشئ إطار عمل للعبة باستخدام Python باستخدام وحدة Pygame،




طريقة انشاء إطار العمل framework باستخدام "Python-Pygame"



اكتشف الجزء الأول من هذه السلسلة
حان الوقت الآن لصنع لعبتك الخاصة من الصفر.
في مقالتي الأولى في هذه السلسلة ، شرحت كيفية استخدام Python لإنشاء لعبة نرد بسيطة تستند إلى النص. 
لقد استخدمت أيضًا وحدة Turtle لإنشاء بعض الرسومات البسيطة. 
في هذه المقالة ، تبدأ في استخدام وحدة تسمى Pygame لإنشاء لعبة برسومات.
يتم تضمين وحدة Turtle في Python افتراضيًا. أي شخص تم تثبيت
 Python لديه أيضًا Turtle. نفس الشيء ليس صحيحًا بالنسبة
 لوحدة نمطية متقدمة مثل Pygame. نظرًا لأنها مكتبة أكواد متخصصة ، يجب عليك 
تثبيت Pygame بنفسك. يستخدم تطوير Python الحديث مفهوم البيئات الافتراضية ،
 والذي يوفر رمز Python الخاص بك مساحة خاصة به للتشغيل فيه ، 
ويساعد أيضًا في إدارة مكتبات الرموز التي يستخدمها تطبيقك. هذا يضمن أنه عند تمرير
 تطبيق Python الخاص بك إلى مستخدم آخر للعب ، فأنت تعرف
 بالضبط ما يحتاجون إلى تثبيته لجعله يعمل.
يمكنك إدارة بيئة Python الافتراضية يدويًا ، أو يمكنك السماح لـ IDE الخاص بك بمساعدتك. 
في الوقت الحالي ، يمكنك السماح لـ PyCharm بالقيام بكل العمل.
 إذا كنت لا تستخدم PyCharm ، فاقرأ مقالة László Kiss Kollár حول إدارة حزم Python .


الشروع في استخدام Pygame


Pygame هي مكتبة ، أو وحدة Python . إنها مجموعة من التعليمات 
البرمجية الشائعة التي تمنعك من الاضطرار إلى إعادة اختراع العجلة مع كل لعبة جديدة تكتبها.
 لقد استخدمت بالفعل وحدة Turtle ، ويمكنك تخيل مدى تعقيد ذلك إذا كان
 عليك كتابة الكود لإنشاء قلم قبل الرسم به. تقدم Pygame مزايا مماثلة ، ولكن لألعاب الفيديو.

تحتاج لعبة الفيديو إلى مكان ، عالم تتم فيه. في Pygame ،
 توجد طريقتان مختلفتان لإنشاء الإعداد الخاص بك:
- اضبط لون الخلفية
- قم بتعيين صورة الخلفية.

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

إعداد برنامج Pygame الأول الخاص بك


لبدء مشروع Python جديد ، ستنشئ عادةً مجلدًا جديدًا على جهاز الكمبيوتر الخاص بك
 وتضع جميع ملفات اللعبة في هذا الدليل. من المهم للغاية أن تحتفظ بجميع 
الملفات اللازمة لتشغيل لعبتك داخل مجلد مشروعك.
يمكن لـ PyCharm (أو أي IDE الذي تستخدمه) القيام بذلك نيابة عنك.
لإنشاء مشروع جديد في PyCharm ، انتقل إلى قائمة ملف وحدد مشروع جديد .
 في النافذة التي تظهر ، أدخل اسمًا لمشروعك (مثل game_001 .) لاحظ أنه تم حفظ هذا المشروع في مجلد PycharmProjects خاص في دليل منزلك. يضمن ذلك بقاء جميع الملفات التي تحتاجها لعبتك في مكان واحد.
عند إنشاء مشروع جديد ، اسمح لـ PyCharm بإنشاء بيئة جديدة باستخدام
 Virtualenv ، واقبل جميع الإعدادات الافتراضية. قم بتمكين خيار إنشاء
 ملف main.py (ولإعداد بعض الإعدادات الافتراضية المهمة.)

بعد النقر فوق الزر " إنشاء " ، يظهر مشروع جديد في نافذة PyCharm الخاصة بك. 
يتكون المشروع من بيئة افتراضية ( دليل venv مدرج في العمود الأيسر) وملف تجريبي يسمى main.py.

احذف جميع محتويات main.py حتى تتمكن من إدخال الرمز المخصص الخاص بك. 
يبدأ نص Python بنوع الملف واسمك والترخيص الذي تريد استخدامه. 
استخدم ترخيصًا مفتوح المصدر حتى يتمكن أصدقاؤك من تحسين لعبتك ومشاركة تغييراتهم معك:

#!/usr/bin/env python3
# by Seth Kenlon

## GPLv3
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


ثم أخبر Python بالوحدات النمطية التي تريد استخدامها. 
في نموذج التعليمات البرمجية هذا ، لا يتعين عليك كتابة الحرف # أو أي شيء بعده في كل سطر. 
يمثل الحرف # في Python تعليقًا ، وملاحظات في الكود تركت لنفسك وللمبرمجين الآخرين:

import pygame  # load pygame keywords
import sys     # let  python use your file system
import os      # help python identify your OS

لاحظ أن PyCharm لا تفهم ماهية Pygame ، وتؤكد عليها لتمييزها على أنها خطأ.
 هذا لأن Pygame ، على عكس sys و os ، غير مضمنة في Python افتراضيًا.
 تحتاج إلى تضمين Pygame في دليل المشروع الخاص بك قبل أن تتمكن
 من استخدامها بنجاح في الكود. لتضمينها ، مرر مؤشر الماوس فوق
 الكلمة pygame حتى ترى إشعارًا منبثقًا يشرح الخطأ.
انقر فوق رابط تثبيت حزمة pygame في مربع التنبيه ، وانتظر حتى تقوم PyCharm
 بتثبيت Pygame في بيئتك الافتراضية.
بمجرد تثبيته ، يختفي الخطأ.
بدون IDE مثل PyCharm ، يمكنك تثبيت Pygame في بيئتك الافتراضية يدويًا باستخدام الأمر pip .







*أقسام الكود


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


'''
Variables
'''

# put variables here

'''
Objects
'''

# put Python classes and functions here

'''
Setup
'''

# put run-once code here

'''
Main Loop
'''

# put game loop here


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

'''
Variables
'''
worldx = 960
worldy = 720


يتطلب محرك Pygame بعض الإعداد الأساسي قبل أن تتمكن من
 استخدامه في برنامج نصي. يجب عليك ضبط معدل الإطارات ، وبدء الساعة الداخلية ،
 والبدء (باستخدام الكلمة الأساسية init، للتهيئة ) Pygame.

أضف هذه المتغيرات:

fps   = 40  # frame rate
ani   = 4   # animation cycles

أضف التعليمات لبدء الساعة الداخلية لـ Pygame في قسم الإعداد:

'''
Setup
'''

clock = pygame.time.Clock()
pygame.init()


الآن يمكنك ضبط الخلفية الخاصة بك.



مقالات ذات صلة :





*ضبط الخلفية


قبل المتابعة ، افتح تطبيق رسومات وأنشئ خلفية لعالم لعبتك. احفظه stage.png
داخل مجلد يسمى imagesفي دليل المشروع الخاص بك.
 إذا كنت بحاجة إلى نقطة بداية ، فيمكنك تنزيل مجموعة من خلفيات المشاع الإبداعي من kenny.nl .
هناك العديد من تطبيقات الرسوم المجانية التي يمكنك استخدامها
 لإنشاء رسومات لألعابك أو تغيير حجمها أو تعديلها:

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

world = pygame.display.set_mode([worldx,worldy])
backdrop = pygame.image.load(os.path.join('images','stage.png'))
backdropbox = world.get_rect()


إذا كنت ستقوم فقط بملء خلفية عالم لعبتك بلون ما ، فكل ما تحتاجه هو:

world = pygame.display.set_mode([worldx, worldy])

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

'''
Variables
'''
BLUE  = (25, 25, 200)
BLACK = (23, 23, 23)
WHITE = (254, 254, 254)


*ابحث عن الأخطاء


PyCharm صارمة ، وهذا نموذجي جدًا للبرمجة. بناء الجملة أمر بالغ الأهمية!
 أثناء إدخال الكود الخاص بك في PyCharm ، ترى التحذيرات والأخطاء.
 التحذيرات صفراء والأخطاء حمراء.
يمكن أن تكون PyCharm مفرطة في الحماس في بعض الأحيان ،
 لذلك من الآمن عادةً تجاهل التحذيرات. من المحتمل أنك تنتهك "أسلوب Python" ،
 لكن هذه اصطلاحات دقيقة ستتعلمها في الوقت المناسب. 
سيستمر تشغيل التعليمات البرمجية الخاصة بك كما هو متوقع.
من ناحية أخرى ، تمنع الأخطاء شفرتك (وأحيانًا PyCharm) من فعل ما تتوقعه. 
على سبيل المثال ، تصر PyCharm بشدة على وجود حرف سطر جديد في نهاية
 السطر الأخير من التعليمات البرمجية ، لذلك يجب عليك الضغط على Enter أو Return 
على لوحة المفاتيح في نهاية الكود. إذا لم تقم بذلك ، ترفض PyCharm بهدوء
 تشغيل التعليمات البرمجية الخاصة بك.


*تشغيل اللعبة


في هذه المرحلة ، يمكنك نظريًا بدء لعبتك. المشكلة هي أنها ستستمر فقط لمدة مللي ثانية.
لإثبات ذلك ، احفظ اللعبة ثم قم بتشغيلها.
إذا كنت تستخدم IDLE ، فقم بتشغيل لعبتك عن طريق الاختيار Run Moduleمن قائمة التشغيل.
إذا كنت تستخدم PyCharm ، فانقر فوق Run file الزر الموجود في شريط الأدوات الأيمن العلوي.
يمكنك أيضًا تشغيل برنامج نصي من Python مباشرة من محطة Unix الطرفية أو
 موجه أوامر Windows ، طالما أنك في بيئتك الافتراضية.
بغض النظر عن طريقة تشغيلها ، لا تتوقع الكثير ، لأن لعبتك لا تدوم سوى
 بضعة أجزاء من الثانية في الوقت الحالي. يمكنك إصلاح ذلك في القسم التالي.






*التكرار


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

يُطلق على هذا غالبًا "الحلقة الرئيسية" ، ويمكنك استخدام المصطلح main كمتغير. 
أضف هذا في أي مكان في قسم المتغيرات الخاص بك:

main = True

أثناء الحلقة الرئيسية ، استخدم كلمات Pygame الأساسية لاكتشاف ما إذا تم
 الضغط على المفاتيح الموجودة على لوحة المفاتيح أو تحريرها. أضف هذا إلى قسم الحلقة الرئيسية:

'''
Main loop
'''

while main:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            try:
                sys.exit()
            finally:
                main = False

        if event.type == pygame.KEYDOWN:
            if event.key == ord('q'):
                pygame.quit()
            try:
                sys.exit()
            finally:
                main = False

تأكد من الضغط على Enter أو Return بعد السطر الأخير من التعليمات
 البرمجية الخاصة بك حتى يكون هناك سطر فارغ في أسفل الملف.

أيضًا في الحلقة الرئيسية الخاصة بك ، قم بتحديث خلفية عالمك.

إذا كنت تستخدم صورة للخلفية:

world.blit(backdrop, backdropbox)

إذا كنت تستخدم لونًا للخلفية:

world.fill(BLUE)

أخيرًا ، اطلب من Pygame تحديث كل شيء على الشاشة وتطوير الساعة الداخلية للعبة.

    pygame.display.flip()
    clock.tick(fps)

احفظ ملفك ، وشغّله مرة أخرى لمشاهدة أكثر الألعاب مملة على الإطلاق.

لإنهاء اللعبة ، اضغط q على لوحة المفاتيح.


جمد بيئة بايثون الخاصة بك



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

اذهب إلى قائمة الأدوات وحدد Sync Python Requirements .
 هذا يحفظ تبعيات المكتبة الخاصة بك في ملف خاص يسمى requirements.txt .
 في المرة الأولى التي تقوم فيها بمزامنة متطلباتك ، تطالبك PyCharm
 بتثبيت مكون إضافي وإضافة تبعيات. انقر لقبول هذه العروض.
يتم إنشاء متطلبات ملف .txt من أجلك ، ويتم وضعها في دليل المشروع الخاص بك.





* الكود



إليك ما يجب أن تبدو عليه شفرتك حتى الآن:

#!/usr/bin/env python3
# by Seth Kenlon

# GPLv3
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import pygame
import sys
import os

'''
Variables
'''

worldx = 960
worldy = 720
fps = 40  # frame rate
ani = 4   # animation cycles
main = True

BLUE = (25, 25, 200)
BLACK = (23, 23, 23)
WHITE = (254, 254, 254)


'''
Objects
'''

# put Python classes and functions here


'''
Setup
'''

clock = pygame.time.Clock()
pygame.init()
world = pygame.display.set_mode([worldx, worldy])
backdrop = pygame.image.load(os.path.join('images', 'stage.png'))
backdropbox = world.get_rect()


'''
Main Loop
'''

while main:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            try:
                sys.exit()
            finally:
                main = False

        if event.type == pygame.KEYDOWN:
            if event.key == ord('q'):
                pygame.quit()
            try:
                sys.exit()
            finally:
                main = False
    world.blit(backdrop, backdropbox)
    pygame.display.flip()
    clock.tick(fps)


ما العمل التالي

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


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