در این مقاله، ما قصد داریم یک نگاه کلی به ساخت یک بازی سادهی مار با استفاده از زبان برنامهنویسی پایتون و کتابخانهی Tkinter را بررسی کنیم. بازی مار یک بازی کلاسیک و محبوب است که الگوی حرکت سادهای دارد و برای مبتدیان نیز بسیار مناسب است.
ما با استفاده از Tkinter یک پنجره بازی ایجاد میکنیم که در آن مار و غذاها را نمایش میدهیم. سپس با استفاده از توابع و کلاسها، حرکت مار و بررسی برخورد مار با غذاها و دیوارها را پیادهسازی میکنیم. همه این فرآیندها در دوره آموزش پایتون کودکان به صورت جامع تر و با تمرین و تکرار بیشتر بررسی می شود. این مقاله برای یادگیری اولیه افراد با کدها است.
Tkinter یک کتابخانهی محبوب و استاندارد برای توسعهی رابطهای کاربری گرافیکی (GUI) در پایتون است. این کتابخانه امکانات زیادی برای ایجاد پنجرهها، دکمهها، برچسبها، و سایر المانهای GUI را فراهم میکند که برای ساخت بازی با پایتون می توانیم از آن استفاده کنیم.
در این قسمت، به شرح کدی که برای آموزش ساخت بازی ماری با زبان پایتون استفاده میکنیم میپردازیم. کلاسهای Snake و Food برای نمایش مار و غذاها ایجاد میشوند. همچنین توابعی برای حرکت مار، بررسی تصادفات، و پایان بازی نیز پیادهسازی میشوند.
کتابخانههای مورد استفاده tkinter و random را وارد میکنیم و یک ثابت به نام SPACE_SIZE را برای اندازه هر مربع در بازی تعریف میکنیم.
اندازه اولیه (body_size) و مختصات (coordinates) مار را به عنوان لیستی از لیست ها مقداردهی می کند. مربع های سبز اولیه که نشان دهنده بدن مار هستند را با استفاده از روش create_rectangle در بوم نقاشی ایجاد می کند. برای دسترسی آسان، اشاره گرهایی به این مربع ها را در لیست squares ذخیره می کند.
مختصات تصادفی برای غذای مار در محدوده قابل بازی بوم نقاشی ایجاد میکند. با استفاده از متد create_oval یک بیضی سفید به عنوان غذا ایجاد میکند.
حرکت مار را بر اساس جهت فعلی (direction) کنترل میکند. با درج موقعیت جدید سر در ابتدای لیست coordinates، مختصات مار را به روز میکند. با استفاده از create_rectangle یک مربع سبز جدید برای سر ایجاد می کند و آن را به لیست squares اضافه میکند.
برخورد مار با غذا را بررسی می کند:
در صورت برخورد، امتیاز افزایش مییابد، غذای فعلی حذف و دوباره ایجاد میشود و طول مار کوتاه نمیشود. در غیر این صورت، آخرین عنصر (دم) از لیستهای coordinates و squares حذف میشود و به طور موثر طول مار کوتاه میشود. از تابع check برای بررسی اتمام بازی به دلیل برخورد با دیوار یا خود مار استفاده می کند.
اگر بازی به پایان نرسیده باشد، با استفاده از root.after، فراخوانی تابع next_turn را پس از 200 میلی ثانیه (0.2 ثانیه) برنامه ریزی می کند. این کار باعث ایجاد انیمیشن حرکت مار میشود.
بیشتر بخوانید: ساخت بازی با اسکرچ
متغیر سراسری direction را برای اعمال تغییر جهت انتخاب شده توسط کاربر به روز می کند. از حرکت مار به سمت مخالف (مثلاً بالا پس از پایین) جلوگیری میکند.
برخورد سر مار با دیوارها (مرزهای بوم نقاشی) را بررسی می کند. برای بررسی برخورد سر مار با سایر قسمت های بدنش، مختصات بدن مار (به جز سر) را پیمایش می کند. در صورت تشخیص برخورد، True و در غیر این صورت False را برمی گرداند.
تمام عناصر را از بوم نقاشی پاک میکند. پیام "Game Over" را با رنگ قرمز نمایش میدهد.
یک نمونه از Tk (root) برای مدیریت پنجره GUI ایجاد میشود.
عنوان پنجره به "بازی مار" تنظیم میشود.
یک متغیر score برای ذخیره امتیاز بازی مقداردهی اولیه میشود.
جهت اولیه (direction) به "پایین" تنظیم میشود.
یک برچسب (label) برای نمایش امتیاز فعلی ایجاد میشود.
یک بوم نقاشی سیاه (canvas) با عرض و ارتفاع 500 پیکسل ایجاد میشود.
چیدمان پنجره به 500x500 پیکسل تنظیم میشود و در 400 پیکسل از سمت چپ و 100 پیکسل از بالای صفحه قرار میگیرد.
برای کنترل جهت مار، کلیدهای جهتدار به توابع مربوطه متصل میشوند.
نمونههایی از کلاس های Snake و Food ایجاد میشوند.
حلقه بازی:
برای شروع حلقه بازی، تابع next_turn فراخوانی می شود.
برای ارتقاء این بازی، میتوانیم ویژگی های مختلفی اعمال کنیم. به عنوان مثال، اضافه کردن صداها، ایجاد سطوح مختلف با پیچیدگیهای متفاوت، و افزودن امکانات چندنفره.
بیشتر بخوانید: ساخت بازی مار با اسکرچ
نتیجهگیری
در این مقاله، ما یک نگاه کلی به اموزش ساخت بازی مار با پایتون و Tkinter داشتیم. این بازی نشان میدهد که چگونه میتوان با استفاده از کتابخانههای قدرتمند پایتون، بازیهای جذاب و سرگرمکننده ایجاد کرد.
آموزشگاه پل استار برگزار کننده دوره های مختلف در زمینه هوش مصنوعی، رباتیک و آموزش برنامه نویسی کودکان و نوجوانان است که شما در صورت علاقمندی به این حوزه ها می توانید با مشاوران ما برای شرکت در این دوره در تماس باشید و یا برای آگاهی از شرایط ثبت نام در این دوره ها بر روی لینک آبی قبل کلیک کنید.