آموزش ساخت بازی مار با پایتون + ویدئوی آموزشی
آموزش ها
سه شنبه 25 اردیبهشت 1403
جهت مطالعه این مقاله به 10 دقیقه زمان نیاز دارید
آنچه در این مقاله خواهیم خواند:

مقدمه:

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

 

معرفی Tkinter:

Tkinter یک کتابخانه‌ی محبوب و استاندارد برای توسعه‌ی رابط‌های کاربری گرافیکی (GUI) در پایتون است. این کتابخانه امکانات زیادی برای ایجاد پنجره‌ها، دکمه‌ها، برچسب‌ها، و سایر المان‌های GUI را فراهم می‌کند که برای ساخت بازی مار با پایتون میتوانیم از آن استفاده کنیم.

 

ساخت بازی مار با پایتون:

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

 

پیاده‌سازی کد:

در این قسمت، به شرح کدی که برای آموزش ساخت بازی ماری با پایتون استفاده می‌کنیم می‌پردازیم. کلاس‌های Snake و Food برای نمایش مار و غذاها ایجاد می‌شوند. همچنین توابعی برای حرکت مار، بررسی تصادفات، و پایان بازی نیز پیاده‌سازی می‌شوند.

 

کتابخانه‌ها و ثابت‌ها: 

کتابخانه‌های مورد استفاده tkinter و random را وارد می‌کنیم و یک ثابت به نام SPACE_SIZE را برای اندازه هر مربع در بازی تعریف می‌کنیم.

 

کلاس Snake :

اندازه اولیه (body_size) و مختصات (coordinates) مار را به عنوان لیستی از لیست ها مقداردهی می کند.
مربع های سبز اولیه که نشان دهنده بدن مار هستند را با استفاده از روش create_rectangle در بوم نقاشی ایجاد می کند.
برای دسترسی آسان، اشاره گرهایی به این مربع ها را در لیست squares  ذخیره می کند.

 

 

کلاس Food :

مختصات تصادفی برای غذای مار در محدوده قابل بازی بوم نقاشی ایجاد می‌کند.
با استفاده از متد create_oval  یک بیضی سفید به عنوان غذا ایجاد می‌کند.   

تابع next_turn :

حرکت مار را بر اساس جهت فعلی (direction) کنترل می‌کند.
با درج موقعیت جدید سر در ابتدای لیست coordinates، مختصات مار را به روز می‌کند.
با استفاده از create_rectangle  یک مربع سبز جدید برای سر ایجاد می کند و آن را به لیست squares  اضافه می‌کند.

 

برخورد با غذا را بررسی می کند:

در صورت برخورد، امتیاز افزایش می‌یابد، غذای فعلی حذف و دوباره ایجاد می‌شود و طول مار کوتاه نمی‌شود.
در غیر این صورت، آخرین عنصر (دم) از لیست‌های coordinates و squares حذف می‌شود و به طور موثر طول مار کوتاه می‌شود.
از تابع check برای بررسی اتمام بازی به دلیل برخورد با دیوار یا خود مار استفاده می کند.
اگر بازی به پایان نرسیده باشد، با استفاده از root.after، فراخوانی تابع next_turn را پس از 200 میلی ثانیه (0.2 ثانیه) برنامه ریزی می کند. این کار باعث ایجاد انیمیشن حرکت مار می‌شود.

 

تابع change_direction :

متغیر سراسری direction را برای اعمال تغییر جهت انتخاب شده توسط کاربر به روز می کند.
از حرکت مار به سمت مخالف (مثلاً بالا پس از پایین) جلوگیری می‌کند.

 

تابع check :

برخورد سر مار با دیوارها (مرزهای بوم نقاشی) را بررسی می کند.
برای بررسی برخورد سر مار با سایر قسمت های بدنش، مختصات بدن مار (به جز سر) را پیمایش می کند.
در صورت تشخیص برخورد، True و در غیر این صورت False را برمی گرداند.
 

 

تابع game_over :

تمام عناصر را از بوم نقاشی پاک می‌کند.
پیام "Game Over" را با رنگ قرمز نمایش می‌دهد.

 

 

اجرای برنامه :

یک نمونه از Tk (root) برای مدیریت پنجره GUI ایجاد می‌شود.
عنوان پنجره به "بازی مار" تنظیم می‌شود.
یک متغیر score برای ذخیره امتیاز بازی مقداردهی اولیه می‌شود.
جهت اولیه (direction) به "پایین" تنظیم می‌شود.
یک برچسب (label) برای نمایش امتیاز فعلی ایجاد می‌شود.
یک بوم نقاشی سیاه (canvas) با عرض و ارتفاع 500 پیکسل ایجاد می‌شود.
چیدمان پنجره به 500x500 پیکسل تنظیم می‌شود و در 400 پیکسل از سمت چپ و 100 پیکسل از بالای صفحه قرار می‌گیرد.
برای کنترل جهت مار، کلیدهای جهت‌دار به توابع مربوطه متصل می‌شوند.
نمونه‌هایی از کلاس های Snake و Food ایجاد می‌شوند.

 

 

حلقه بازی:

برای شروع حلقه بازی، تابع next_turn  فراخوانی می شود.
 

 

 

 

برنامه نهایی:

 

 

 

 

 

بهبودها و توسعه‌های آتی:

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

نتیجه‌گیری:

در این مقاله، ما یک نگاه کلی به اموزش ساخت بازی مار با پایتون و Tkinter داشتیم. این بازی نشان می‌دهد که چگونه می‌توان با استفاده از کتابخانه‌های قدرتمند پایتون، بازی‌های جذاب و سرگرم‌کننده ایجاد کرد.