زبان پایتون، به عوان زبانی قدرتمند و دارای کتابخانه های بسیار شناخته می شود. یکی از کارکردهای این زبان طراحی و ساخت بازی های کامیپوتری می باشید. در این نوشته به بررسی کامل موضوع ساخت بازی با پایتون در کتابخانه آرکاید پرداخته شده است. همچنین در ذیل این نوشته به سوالات زیر پاسخ داده می شود:

  • چگونه می‌توان یک بازی 2D با پایتون و کتابخانه آرکاید ایجاد کرد؟
  • یاد بگیرید چگونه با آرکاید شروع به کار کنید…
  • یک کتابخانه ساده پایتون برای ساختن بازی‌های ویدیویی 2 بعدی…

ساخت یک بازی 2D با پایتون و کتابخانه آرکاید

پایتون زبان برجسته‌ای برای یادگیری افراد در برنامه است. این زبان برای هرکسی که بخواهد کارها را سامان دهد و زمان زیادی را صرف boilerplate  کد نکند، فوق‌العاده است.

آرکاید یک کتابخانه پایتون برای ایجاد بازی‌های 2 بعدی می‌باشد که استفاده از آن آسان است و به همان اندازه که تجربه به دست می‌آورید بسیار تواناست.

نکته
همچنین می توانید برای تکمیل مهارت خود به دوره آموزش رایگان پایتون مراجعه نمایید.

در این مقاله من به شما توضیح خواهم داد که چگونگی ساخت بازی با پایتون با استفاده از آرکاید یک بازی ویدیویی بنویسید.

من بعد از تدریس به دانش‌آموزانی که از کتابخانه PyGame استفاده می‌کردند، شروع به توسعه بر روی آرکاید کردم. من برای تقریباً 10 سال با استفاده از PyGame تدریس کردم و وبگاه http://programarcadegames.com/  را برای تدریس آنلاین توسعه دادم. PyGame عالی است اما درنهایت حس کردم که وقتم را برای رفع باگ‌هایی هدر می‌دهم که هیچ‌وقت درست نمی‌شوند.

نگران آموزش چیزهایی مانند event loop بودم که دیگر آن چیزی نبود که ما باید از آن استفاده کنیم. من یک پکیج کامل از توضیحات داشتم که چرا مختصات y معکوس شده است، چون‌که PyGame به‌ندرت بروز می‌شد و اینکه بر اساس یک کتابخانه قدیمی SDL 1 بود. به‌جای چیزی مانند openGL مدرن من امید زیادی برای آینده نداشتم.

من کتابخانه‌ای می‌خواستم که استفاده از آن آسان‌تر و قدرتمندتر باشد. از تعدادی از ویژگی‌های جدید پایتون 3 استفاده کند مانند decorators و type-hinting . آرکاید همان بود که می‌خواستم، و این روشی است که باید به کمک آن شروع کرد.

نصب

آرکاید مانند بسیار دیگری از پکیج‌ها از طریق PyPi, قابل‌دسترس است. به این معنا که شما می‌توانید آرکاید را با استفاده از دستور PiP نصب کنید “یا فرمان pipenv”. اگر شما قبلاً پایتون را نصب‌کرده‌اید، به‌احتمال‌زیاد می‌توانید یک سطر فرمان‌بر روی ویندوز بازکنید و تایپ کنید:

pip install arcade

یا بر روی سیستم‌عامل مک و لینوکس تایپ کنید:

pip3 install arcade

شما می‌توانید یک پنجره بازکنید و نقاشی‌های ساده با چند خط کد ایجاد کنید، بیایید مثالی ایجاد کنیم که صورت خندانی مانند شکل زیر دارد:

طراحی صورتک خندان

 

متن زیر نشان می‌دهد چگونه می‌توانید از فرمان‌های طراحی آرکاید برای انجام این کار استفاده کنید. توجه داشته باشید که حتی لازم نیست بدانید چگونه از کلاس‌ها استفاده کنید یا حتی کارکرد تابع‌ها را بدانید. برنامه‌نویسی با بازخورد سریع بصری، برای هرکسی که می‌خواهد یادگیری برنامه‌نویسی را شروع کند عالی است.

استفاده از فرمان‌های طراحی آرکاید برای انجام کارالبته، نوشتن کد در متن جهانی شکل خوبی نیست. خوشبختانه بهبود برنامه شما با استفاده از توابع ساده است. در اینجا ما می‌توانیم نمونه‌ای از یک درخت کاج در یک مکان خاص (x. y) با استفاده از یک تابع را ببینیم:

استفاده از یک درخت کاج در یک مکان خاص برای طراحی بازی

برنامه‌نویسان باتجربه‌تر می‌دانند که برنامه‌های گرافیکی پیشرفته اولین بار اطلاعات را در کارت گرافیک وارد می‌کنند، و سپس از کارت گرافیک می‌خواهند که بعداً آن‌ها را به‌صورت دسته‌ای بکشد. آرکاید نیز از این عمل پشتیبانی می‌کند. رسم 10،000 مستطیل به‌طور جداگانه حدود 0.800 ثانیه طول می‌کشد. رسم آن‌ها به‌عنوان دسته کمتر از 0.001 ثانیه طول می‌کشد.

در ادامه مقاله ساخت بازی با پایتون به کلاس پنجره می پردازیم.

کلاس پنجره

معمولاً برنامه‌های بزرگ‌تر از کلاس پنجره به دست می‌آیند یا از decorators استفاده می‌کنند. این به برنامه‌نویس اجازه می‌دهد تا کد را برای رسیدگی به طراحی، به‌روزرسانی، و کنترل ورودی از کاربر بنویسد. یک نمونه برای شروع یک برنامه مبتنی بر Window-based مثال زیر می‌باشد:

شروع یک برنامه مبتنی بر Window-based

کلاس پنجره چندین روش دارد که برنامه شما می‌تواند برای فراهم آوردن قابلیت‌های برنامه لغو شوند. در اینجا برخی از رایج‌ترین موارد استفاده‌شده است:

  • on_draw: تمام کدها برای کشیدن صفحه‌نمایش به اینجا می‌روند.
  • Update: تمام کدها برای حرکت آیتم‌های خود و انجام بازی منطق به اینجا می‌روند. این مورد حدود 60 بار در ثانیه گفته می‌شود.
  • on_key_press: زمانی که یک کلید فشار داده می‌شود، مانند سرعت دادن به یک بازیکن.
  • on_key_release: وقتی یک کلید زاآآآؤاراآزاد می‌شود، در اینجا می‌توانید یک بازیکن را از حرکت بازدارید.
  • on_mouse_motion: این هرزمانی که ماوس حرکت می‌کند خوانده می‌شود.
  • on_mouse_press: زمانی که دکمه ماوس فشار داده می‌شود خوانده می‌شود.
  • set_viewport: این تابع دربازی‌های لغزشی استفاده می‌شود.

 

اسپریت ها

اسپریت ها یک روش آسان برای ایجاد یکشی 2D bitmapped در آرکاید هستند. آرکاید یک روش برای ساده کردن نقاشی دارد، حرکت، و انیمیت کردن اسپریت ها. همچنین می‌توانید به‌راحتی از اسپریت ها برای تشخیص برخورد بین اشیا استفاده کنید.

ساختن یک اسپریت

ایجاد یک نمونه از کلاس اسپریت ها از یک تصویر آسان است. یک برنامه‌نویس تنها به نام فایل یک تصویر تا بتواند فیلد خالی آن را بنویسد و به‌صورت اختیاری برای مقیاس تصویر بالا و پایین است. برای مثال:

ساخت یک استریپ

این کد یک اسپریت را با استفاده از تصویر ذخیره‌شده در coin_01.png. این تصویر تا 20% ارتفاع و عرض اصلی خود خواهد شد.

اضافه کردن یک تصویر png به بازی

لیست اسپریت ها

اسپریت ها معمولاً در لیست‌ها سازمان‌دهی می‌شوند، این لیست‌ها باعث می‌شوند که اسپریت ها به‌راحتی مدیریت شوند، اسپریت ها در یک لیست از openGL برای دسته‌ای کشیدن به‌عنوان یک گروه استفاده می‌کنند. کد زیر یک بازی را با یک بازیکن شروع می‌کند. و تعدادی سکه برای جمع‌کردن توسط بازیکن. ما از 2 لیست استفاده می‌کنیم، یکی برای بازیکن و دیگری برای سکه‌ها.

لیست کردن اسپریت ها برا مدیریت بهتر

ما می‌توانیم به‌راحتی سکه‌ها را در لیست سکه بکشیم:

کشیدن سکه ها در لیست

تشخیص برخورد اسپریت ها

تابع check_for_collision_with_list به ما اجازه می‌دهد که ببینیم آیا یک اسپریت به یک لیست دیگر اسپریت ها اضافه می‌شود یا نه. ما می‌توانیم از این روش برای دیدن همه سکه‌هایی که بازیکن اسپریت با آن در ارتباط است، استفاده کنیم. با استفاده از یک حلقه ساده، می‌توانیم از شر سکه‌های بازی خلاص شویم و به افزایش امتیاز خود بپردازیم.

تابع check_for_collision_with_list برای بررسی توانایی اضافه کردن استریپ

خلاصه

 

شما اکنون توانایی ساخت بازی با پایتون در کتابخانه آرکاید را دارید. آرکاید به شما اجازه می‌دهد برنامه‌نویسی گرافیکی و بازی‌ها را با کدی آسان شروع کنید. بسیاری از برنامه‌نویسان تازه‌کار بازی‌های خارق‌العاده‌ای بعد از شروع کار خود ساخته‌اند. شما هم شانس خودتان را امتحان کنید.

 

امیدواریم این مطلب برای شما جذاب و کاربردی بوده باشد.

مترجم: امیرحسین فضیلت