اگر علاقه مند به برنامه نویسی و بازی های کامپیوتری هستید پس به این موضوع فکر کرده اید که بازی های ویدئویی چگونه ساخته می شوند؟ باید گفت این کار آنقدر ها هم پیچیده نیست. در این پست قصد داریم تا ساخت بازی با پایتون را آموزش دهیم. زبان برنامه نویسی پایتون با داشتن کتابخانه های متنوع برای گیم نویسی، یک ابزار برای ساخت و توسعه بازی های کامپیوتری است. کتابخانه pygame پایتون به بهترین نحو، امکانات جالبی را برای ساخت بازی های کامپیوتری به شما ارائه می دهد. در این آموزش گام به گام در 10 مرحله، نحوه کدنویسی بازی خرگوش ها و گورکن ها را با پایتون به شما عزیزان آموزش خواهیم داد.
مقدمات اولیه و شروع کار
اگر می خواهید این آموزش را روی سیستم عامل ویندوز خود امتحان کنید و مراحل ساخت بازی با پایتون را یاد بگیرید، باید Python را نصب کنید. اگر در سیستم شما پایتون نصب نشده، می توانید از مقاله آموزش نصب پایتون با عنوان مقدمات برنامه نویسی پایتون کمک بگیرید. سعی کنید طبق این آموزش جلو بروید و قبل از هر کاری برنامه کوچکی بنویسید و اجرا کنید تا از درست کار کردن پایتون بر روی سیستم عامل خود اطمینان داشته باشید.
اگر از نصب پایتون روی سیستم خودتان مطمئن شدید با استفاده از ابزار pip، کتابخانه pygame را روی پایتون خود نصب کنید. اگر در مورد نصب کتابخانه بر روی پایتون، اشکال دارید می توانید آموزش نصب کتابخانه بر روی پایتون را مطالعه کنید. دستوری که برای نصب کتابخانه pygame وجود دارد دستور ساده زیر است.
pip install pygame
اگر می خواهید این آموزش را روی سیستم عامل ویندوز خود امتحان کنید و مراحل ساخت بازی با پایتون را یاد بگیرید، باید Python را نصب کنید. اگر در سیستم شما پایتون نصب نشده، می توانید از مقاله آموزش نصب پایتون با عنوان مقدمات برنامه نویسی پایتون کمک بگیرید. سعی کنید طبق این آموزش جلو بروید و قبل از هر کاری برنامه کوچکی بنویسید و اجرا کنید تا از درست کار کردن پایتون بر روی سیستم عامل خود اطمینان داشته باشید.
اگر از نصب پایتون روی سیستم خودتان مطمئن شدید با استفاده از ابزار pip، کتابخانه pygame را روی پایتون خود نصب کنید. اگر در مورد نصب کتابخانه بر روی پایتون، اشکال دارید می توانید آموزش نصب کتابخانه بر روی پایتون را مطالعه کنید. دستوری که برای نصب کتابخانه pygame وجود دارد دستور ساده زیر است.
pip install pygame
البته اگر قبلاً با پایتون کار کرده اید حتما می دانید که پایتون دارای IDE ها و محیط های برنامه نویسی متفاوتی است که می توانید گام به گام این آموزش را از طریق آنها انجام دهید در هیمن سایت هم در مورد محیط های برنامه نویسی پایتون به طور کامل صحبت شده است. اما بنا را بر این می گذاریم که هیچ IDE در سیستم شما نصب نیست و از محیط پیش فرض پایتون برای برنامه نویسی و ساخت بازی با پایتون استفاده می کنیم.
برای تأیید نصب کتابخانه، IDLE پایتون را باز کنید و دستور import pygame را تایپ کنید اگر نتیجه این دستور، خطایی در بر نداشت و ورژن pygame نشان داده شد، پس همه چیز خوب است پس از اطمینان از نصب pygame می توانیم به سراغ کد نویسی ساخت بازی با پایتون بریم.
اجرای کد پایتون از فایل
در حالی که می توانید قطعات کوتاهی از کد پایتون را در IDLE پایتون اجرا کنید اما اگر می خواهید روی برنامه های بزرگتری کار کنید (مانند ساخت بازی با پایتون)، احتمالاً می خواهید کد خود را در یک فایل ذخیره کنید تا مجبور نباشید هر بار آن را تایپ و اجرا کنید. روش های مختلفی برای اجرای برنامه پایتون به صورت فایل وجود دارد. یک راه این است که از ویرایشگر متن ساده مانند Notepad (Windows) استفاده کنید.
برای شروع، یک فایل متنی جدید باز کنید و کد پایتون خود را وارد کنید. برای شروع در IDEL shell از قسمت File گزینه New File را بزنید و کد ساده مثلاً چاپ Hello World را بزنید و F5 را برای اجرا بزنید و پس از ذخیره کردن فایل در یک مکان (در درایو C یک فولدر با نام Game ایجاد کنید) با نام game می توانید پیام Hello World را در IDEL shell مشاهده کنید. محتویات پوشه Game در درایو C هم یک فایل هست با نام game و پسوند py که در ادامه کار، کدنویسی را روی این فایل انجام خواهیم داد.
در حالی که می توانید قطعات کوتاهی از کد پایتون را در IDLE پایتون اجرا کنید اما اگر می خواهید روی برنامه های بزرگتری کار کنید (مانند ساخت بازی با پایتون)، احتمالاً می خواهید کد خود را در یک فایل ذخیره کنید تا مجبور نباشید هر بار آن را تایپ و اجرا کنید. روش های مختلفی برای اجرای برنامه پایتون به صورت فایل وجود دارد. یک راه این است که از ویرایشگر متن ساده مانند Notepad (Windows) استفاده کنید.
برای شروع، یک فایل متنی جدید باز کنید و کد پایتون خود را وارد کنید. برای شروع در IDEL shell از قسمت File گزینه New File را بزنید و کد ساده مثلاً چاپ Hello World را بزنید و F5 را برای اجرا بزنید و پس از ذخیره کردن فایل در یک مکان (در درایو C یک فولدر با نام Game ایجاد کنید) با نام game می توانید پیام Hello World را در IDEL shell مشاهده کنید. محتویات پوشه Game در درایو C هم یک فایل هست با نام game و پسوند py که در ادامه کار، کدنویسی را روی این فایل انجام خواهیم داد.
اضافه کردن منابع بازی
تا الان شما تقریباً آماده ساخت بازی با پایتون هستید. اما یک بازی بدون جلوه های گرافیکی و صوتی چنگی به دل نخواهد زد؛ پس یک فایل Zip آماده شده ای را از طریق این لینک (+) دانلود کنید و به پوشه Game داخل درایو C منتقل کنید و آن را از حالت فشرده خارج کنید تا لیستی از منابع استفاده شده در ساخت بازی با پایتون، اعم از تصاویر و صدا ها برای پروژه بازی وجود داشته باشد.
تا الان شما تقریباً آماده ساخت بازی با پایتون هستید. اما یک بازی بدون جلوه های گرافیکی و صوتی چنگی به دل نخواهد زد؛ پس یک فایل Zip آماده شده ای را از طریق این لینک (+) دانلود کنید و به پوشه Game داخل درایو C منتقل کنید و آن را از حالت فشرده خارج کنید تا لیستی از منابع استفاده شده در ساخت بازی با پایتون، اعم از تصاویر و صدا ها برای پروژه بازی وجود داشته باشد.
مرحله اول: ساختار اولیه کد
به سراغ فایل game.py ایجاد شده بروید و محتویات قبلی آن را پاک کنید و کد زیر را به آن اضافه کنید.
# 1 - Import library
import pygame
from pygame.locals import *
# 2 - Initialize the game
pygame.init()
width, height = 640, 480
screen=pygame.display.set_mode((width, height))
# 3 - Load images
player = pygame.image.load("resources/images/dude.png")
# 4 - keep looping through
while 1:
# 5 - clear the screen before drawing it again
screen.fill(0)
# 6 - draw the screen elements
screen.blit(player, (100,100))
# 7 - update the screen
pygame.display.flip()
# 8 - loop through the events
for event in pygame.event.get():
# check if the event is the X button
if event.type==pygame.QUIT:
# if it is quit the game
pygame.quit()
exit(0)
فایل را در پوشه بازی خود ذخیره کنید (پوشه ای که زیر پوشه منابع در آن قرار دارد) و با F5 آن را اجرا کنید. بیایید 8 بخش کد را که در سورس آن نشانه گذاری شده، بخش به بخش مرور کنیم:
به سراغ فایل game.py ایجاد شده بروید و محتویات قبلی آن را پاک کنید و کد زیر را به آن اضافه کنید.
# 1 - Import library
import pygame
from pygame.locals import *
# 2 - Initialize the game
pygame.init()
width, height = 640, 480
screen=pygame.display.set_mode((width, height))
# 3 - Load images
player = pygame.image.load("resources/images/dude.png")
# 4 - keep looping through
while 1:
# 5 - clear the screen before drawing it again
screen.fill(0)
# 6 - draw the screen elements
screen.blit(player, (100,100))
# 7 - update the screen
pygame.display.flip()
# 8 - loop through the events
for event in pygame.event.get():
# check if the event is the X button
if event.type==pygame.QUIT:
# if it is quit the game
pygame.quit()
exit(0)
فایل را در پوشه بازی خود ذخیره کنید (پوشه ای که زیر پوشه منابع در آن قرار دارد) و با F5 آن را اجرا کنید. بیایید 8 بخش کد را که در سورس آن نشانه گذاری شده، بخش به بخش مرور کنیم:
بخش 1: import کردن کتابخانه PyGame
این بخش به شما امکان می دهد از توابع کتابخانه pygame و کتابخانه های مورد نیاز خود در برنامه استفاده کنید.
بخش 2: تنظیمات اولیه
در این بخش تنظیمات اولیه PyGame انجام می شود و پنجره نمایش و سایر موارد قابل تنظیم خواهد بود.
بخش 3: بارگذاری فایل ها و تصاویر
در این بخش تصویری را که برای خرگوش در نظر گرفته شده بارگذاری می شود و در مراحلی بعدی فایل های دیگری نیز بارگذاری خواهد شد. پس بدانید بخش سوم مربوط به بارگذاری فایل ها می باشد.
این بخش به شما امکان می دهد از توابع کتابخانه pygame و کتابخانه های مورد نیاز خود در برنامه استفاده کنید.
بخش 2: تنظیمات اولیه
در این بخش تنظیمات اولیه PyGame انجام می شود و پنجره نمایش و سایر موارد قابل تنظیم خواهد بود.
بخش 3: بارگذاری فایل ها و تصاویر
در این بخش تصویری را که برای خرگوش در نظر گرفته شده بارگذاری می شود و در مراحلی بعدی فایل های دیگری نیز بارگذاری خواهد شد. پس بدانید بخش سوم مربوط به بارگذاری فایل ها می باشد.
بخش 4: حلقه اصلی بازی
در بخش چهارم حلقه اصلی بازی وجود دارد و درون این حلقه عملیات های مخلفی انجام خواهد شد.
*** توجه: در مواردی که زبان های دیگر مانند Objective-C ، Java یا PHP از براکت های حلقه ای برای نشان دادن یک بلوک از کد برای اجرا در حلقه while یا دستور if استفاده می کنند، پایتون از تو رفتگی برای شناسایی بلوک های کد استفاده می کند. بنابراین تورفتگی مناسب در پایتون بسیار مهم است – این مهم را در ساخت بازی با پایتون در نظر داشته باشید.
بخش 5: پاک کردن صفحه نمایش قبل از ترسیم
قبل از ترسیم یا نمایش هر چیزی، صفحه نمایش با رنگ سیاه مقدار دهی شده است ولی در مراحل بعدی تصاویری به این قسمت اضافه خواهد شد.
بخش 6: اضافه کردن تصاویر به صفحه نمایش
در این بخش تصویر بارگذاری شده خرگوش، روی صفحه با مختصات x = 100 و y = 100 اضافه شده است.
در بخش چهارم حلقه اصلی بازی وجود دارد و درون این حلقه عملیات های مخلفی انجام خواهد شد.
*** توجه: در مواردی که زبان های دیگر مانند Objective-C ، Java یا PHP از براکت های حلقه ای برای نشان دادن یک بلوک از کد برای اجرا در حلقه while یا دستور if استفاده می کنند، پایتون از تو رفتگی برای شناسایی بلوک های کد استفاده می کند. بنابراین تورفتگی مناسب در پایتون بسیار مهم است – این مهم را در ساخت بازی با پایتون در نظر داشته باشید.
بخش 5: پاک کردن صفحه نمایش قبل از ترسیم
قبل از ترسیم یا نمایش هر چیزی، صفحه نمایش با رنگ سیاه مقدار دهی شده است ولی در مراحل بعدی تصاویری به این قسمت اضافه خواهد شد.
بخش 6: اضافه کردن تصاویر به صفحه نمایش
در این بخش تصویر بارگذاری شده خرگوش، روی صفحه با مختصات x = 100 و y = 100 اضافه شده است.
بخش 7: بروز کردن صفحه نمایش
در این بخش در هر مرحله صفحه نمایش به روز می شود.
بخش 8: بررسی شرایط توقف برنامه
در این بخش هر رویداد جدید بررسی می شود و در صورت برقراری شرط یا شرایط خاتمه برنامه، خروج یا ادامه بازی صادر می شود.
اگر کد را اکنون اجرا می کنید (از طریق Run \ Run Module در منوی Idle) یا F5 باید صفحه ای مشابه تصویر زیر را مشاهده کنید:
در این بخش در هر مرحله صفحه نمایش به روز می شود.
بخش 8: بررسی شرایط توقف برنامه
در این بخش هر رویداد جدید بررسی می شود و در صورت برقراری شرط یا شرایط خاتمه برنامه، خروج یا ادامه بازی صادر می شود.
اگر کد را اکنون اجرا می کنید (از طریق Run \ Run Module در منوی Idle) یا F5 باید صفحه ای مشابه تصویر زیر را مشاهده کنید:
همانطور که مشاهده می کنید تصویر خرگوش در صفحه نمایش آمده است ولی بازی خیلی ساده و بی مفهومی به نظر می رسد و خرگوش فقط روی یک پس زمینه سیاه ایستاده است. وقت آن رسیده که کمی بازی را زیبا کنیم.
This media is not supported in your browser
VIEW IN TELEGRAM
مرحله دوم: اضافه کردن منظره به بازی
در ادامه ساخت بازی با پایتون بیایید کمی شکل بازی رو با افزودن منظره زیبا کنیم. این کار را می توان با دستور screen.blit انجام داد. در پایان بخش شماره 3 یعنی Load images، پس از بارگذاری تصویر قبلی، کد زیر را اضافه کنید:
grass = pygame.image.load("resources/images/grass.png")
castle = pygame.image.load("resources/images/castle.png")
این کار باعث بارگذاری تصاویر و قرار دادن آنها در متغیرهای خاص می شود. حالا این تصاویر (یعنی تصویر چمن grass و قلعه castle) باید روی صفحه نمایش قرار داده شوند. اما اگر تصویر چمن را بررسی کنید، متوجه می شوید که کل سطح صفحه نمایش را پوشش نمی دهد، یعنی باید کل تصویر در صفحه نمایش 640*480 نمایش داده شود تا طور کامل آن را بپوشاند برای این کار کد زیر را به game.py در ابتدای قسمت شماره 6 (قبل از دستور screen.blit(player, (100,100))) اضافه کنید:
در ادامه ساخت بازی با پایتون بیایید کمی شکل بازی رو با افزودن منظره زیبا کنیم. این کار را می توان با دستور screen.blit انجام داد. در پایان بخش شماره 3 یعنی Load images، پس از بارگذاری تصویر قبلی، کد زیر را اضافه کنید:
grass = pygame.image.load("resources/images/grass.png")
castle = pygame.image.load("resources/images/castle.png")
این کار باعث بارگذاری تصاویر و قرار دادن آنها در متغیرهای خاص می شود. حالا این تصاویر (یعنی تصویر چمن grass و قلعه castle) باید روی صفحه نمایش قرار داده شوند. اما اگر تصویر چمن را بررسی کنید، متوجه می شوید که کل سطح صفحه نمایش را پوشش نمی دهد، یعنی باید کل تصویر در صفحه نمایش 640*480 نمایش داده شود تا طور کامل آن را بپوشاند برای این کار کد زیر را به game.py در ابتدای قسمت شماره 6 (قبل از دستور screen.blit(player, (100,100))) اضافه کنید:
همانطور که می بینید، دستور for ابتدا از طریق x سپس درون حلقه for داخلی، از طریق y حلقه می زند و برای پوشش عکس چمن بر روی بعد صفحه نمایش x و y ایجاد شده توسط حلقه های for رسم می کند. چند خط بعدی فقط قلعه ها یا castle ها را روی صفحه ترسیم می کند. اگر برنامه را اکنون اجرا کنید، باید چیزی شبیه به این خروجی را دریافت کنید: