آموزش ساخت بازی مار با پایتون – ساده و رایگان + نمونه کد


پایتون یکی از بهترین زبانهای برنامه نویسی حال حاضر به حساب میآید و محبوبیت زیادی دارد و افراد بسیاری به دنبال یادگیری پایتون هستند. یکی از مهمترین مراحل در مسیر یادگیری برنامه نویسی ، خصوصاً مسیر یادگیری پایتون، انجام پروژههای عملی است. یادگیری واقعی با تمرین حاصل میشود و مهارت برنامه نویسی را تنها میتوان با انجام پروژه تقویت کرد. یکی از پروژههای رایجی که در آموزش پایتون و به ویژه در حوزه بازیسازی و آن هم در حیطه ساخت بازی با پایتون بسیار رایج است و محبوبیت دارد، ساخت بازی مار با پایتون به حساب میآید. در این مقاله از مجله فرادرس به آموزش ساخت بازی مار با پایتون پرداخته شده است.
آموزش ساخت بازی مار با پایتون
ساخت بازی مار در این مقاله از ۸ گام مختلف تشکیل شده است. Pygame کتابخانهای محبوب و قدرتمند برای ساخت بازی با پایتون به حساب میآید.
در این مطلب هم از Pygame برای ساخت بازی مار با پایتون استفاده شده است. اولین کاری که باید برای ساخت بازی در پایتون با Pygame انجام شود، نصب این کتابخانه روی سیستم است.
۱. نصب Pygame
باید به این نکته توجه داشت که پیش از هر چیز باید نصب پایتون در ویندوز، مک یا لینوکس انجام شود. نصب PIP پایتون نیز در صورت نصب نبودن آن، پیش از نصب Pygame ضروری است. برای انجام این کار میتوان به سادگی از دستور زیر در خط فرمان استفاده کرد:
پس از نصب مجموعه ماژولهای Pygame با استفاده از PIP، فقط باید آن را ایمپورت کرد و به این ترتیب کار توسعه و ساخت بازی مار با پایتون شروع میشود. پیش از ادامه آموزش ساخت بازی مار با پایتون ، بهتر است به بررسی اجمالی آن دسته از توابع Pygame پرداخته شود که در این مقاله از آنها استفاده شده است. این توابع Pygame به همراه شرح هر کدام در جدول زیر فهرست شدهاند:
تابع | شرح تابع |
init() | راهاندازی اولیه تمام ماژولهای ایمپورت شده پایگیم را انجام میدهد (تاپلی را بازمیگرداند که مشخص کننده موفقیت یا عدم موفقیت راهاندازی اولیه هر یکی از ماژولها است). |
display.set_mode() | برای ایجاد سطح (Surface)، یک تاپل یا لیست (با ترجیح تاپل) را به عنوان پارامتر خود دریافت میکند. |
update() | صفحه را بهروزرسانی میکند. |
quit() | برای قطع راهاندازی همه چیز استفاده میشود. |
set_caption() | متن عنوان در بالای صفحه نمایش را تنظیم میکند. |
event.get() | لیستی از تمام رویدادها (Eventها) را بازمیگرداند. |
Surface.fill() | سطح را با رنگی یکنواخت پُر میکند. |
time.Clock() | به ردیابی زمان کمک میکند. |
font.SysFont() | یک فونت Pygame را با استفاده از منابع فونت سیستم ایجاد خواهد کرد. |
پس از نصب Pygame در گام بعدی ساخت بازی مار با پایتون باید صفحه بازی را ایجاد کرد. این کار در بخش بعد انجام شده است.

۲. ایجاد صفحه برای ساخت بازی مار با پایتون
برای ایجاد صفحه با استفاده از Pygame، باید از تابع display.set_mode() استفاده کرد. همچنین، لازم است متُدهای init() و quit() نیز برای راهاندازی اولیه و قطع اجرای (Uninitialize) همه چیز در آغاز و پایان کدها به کار گرفته شوند. متُد update() برای بهروزرسانی هر گونه تغییرات انجام شده در صفحه مورد استفاده قرار میگیرد.
یک متُد دیگر، یعنی flip()، هم وجود دارد که مشابه تابع update() عمل میکند. تفاوتش این است که متُد update() تنها تغییرات انجام شده را بهروزرسانی میکند. البته، اگر هیچ پارامتری ارجاع داده نشده باشد، این متُد تمام صفحه را بهروزرسانی خواهد کرد. اما، متُد flip() همیشه کل صفحه را دوباره بارگذاری می کند.
خروجی کدهای فوق، صفحهای خالی برای ساخت بازی مار با پایتون به صورت زیر است:

با اجرای کدهای بالا، صفحه بازی ظاهر خواهد شد اما این صفحه بلافاصله بسته میشود. برای رفع این مشکل، باید از یک حلقه بازی با While قبل از خروج از بازی استفاده کرد. این کار در کدهای زیر انجام شده است:
با اجرای کدهای بالا، ملاحظه خواهد شد که صفحه ایجاد شده این بار بسته نمیشود و همچنین، تمام رخدادهایی (Event) را که روی آن اتفاق میافتند هم بازگردانده میشوند. این کار با استفاده از تابع event.get() انجام شده است. همچنین در کدهای فوق با استفاده از تابع display.set_caption()، نام «Snake Game by Faradars» برای صفحه بازی انتخاب شده است. خروجی به صورت زیر خواهد بود:

حالا صفحهای برای بازی مار با پایتون ساخته شده است، اما وقتی قصد بستن صفحه با کلیک کردن دکمه ضربدر وجود داشته باشد، صفحه بسته نمیشود. این اتفاق به این دلیل رخ میدهد که کدهای لازم برای بستن صفحه هنگام کلیک خوردن دکمه ضربدر هنوز نوشته نشدهاند. برای انجام این کار، رویدادی (Event) به نام «QUIT» در Pygame ارائه شده است که به صورت زیر باید از آن استفاده کرد:
به این ترتیب صفحه بازی آماده است. در گام بعدی ساخت بازی مار با پایتون باید رسم مار روی صفحه را انجام داد که در بخش بعدی این مقاله آموزشی به آن پرداخته میشود.
۳. ایجاد مار در ساخت بازی مار با پایتون
برای ساخت مار ، ابتدا باید چند متغیر مربوط به رنگ را ایجاد و راهاندازی اولیه کرد؛ این متغیرها برای رنگآمیزی مار، غذا، صفحه و سایر المانها در بازی مورد استفاده قرار خواهند گرفت. قالب رنگی استفاده شده در Pygame قالب RGB یعنی «قرمز،سبز، آبی» است.

در صورتی که تمام این رنگها صفر باشند، رنگ سیاه به دست خواهد آمد و اگر هر سه شاخص رنگهای قرمز، سبز و آبی مقدارشان ۲۵۵ باشد، رنگ سفید حاصل خواهد شد. مار ما در این آموزش ساخت بازی مار با پایتون به صورت مستطیلی خواهد بود. برای رسم مستطیل در Pygame، میتوان از تابعی به نام draw.rect() استفاده کرد. این تابع برای رسم مستطیل با رنگ و اندازه دلخواه به کار گرفته شده است.
خروجی کدهای فوق به صورت زیر است:

همانطور که در تصویر خروجی فوق ملاحظه میشود، سر مار به صورت یک مربع آبی رنگ ساخته شده است. در گام بعدی باید مار را به حرکت در آورد.
۴. حرکت دادن مار در ساخت بازی مار با پایتون
برای حرکت دادن مار، لازم است از رویدادهای کلید موجود در کلاس KEYDOWN ماژولهای Pygame استفاده کرد. رویدادهایی که در اینجا از آنها استفاده شده است، شامل موارد زیر میشوند:
- K_UP
- K_DOWN
- K_LEFT
- K_LEFT
رویدادهای فوق به ترتیب برای حرکت دادن مار در بازی به جهتهای بالا، پایین، چپ و راست مورد استفاده قرار میگیرند. همچنین، صفحه نمایش در بازی با استفاده از متُد fill() از رنگ پیشفرض یعنی مشکی به سفید تغییر رنگ داده شده است. متغیرهای جدیدی با نامهای x1_change و y1_change نیز برای ذخیره مقادیر بهروزرسانی شده مختصات x و y ایجاد شدهاند:
خروجی کدهای فوق به صورت زیر است:

در ادامه این مقاله به پیادهسازی وضعیت «Game Over» یا اتمام بازی (بازنده شدن) در ساخت بازی مار با پایتون پرداخته شده است. اما پیش از آن، دورههای آموزش پایتون فرادرس به علاقهمندان معرفی شدهاند تا آشنایی لازم با منابع تمرینی بیشتر برای ادامه یادگیری و تقویت مهارت به دست آید.
فیلم های آموزش پایتون فرادرس

ساخت بازی مار با پایتون تنها یکی از پروژههای اولیهای است که برای تمرین برنامه نویسی پایتون انجام میشود. این پروژه تنها مخصوص علاقهمندان به بازیسازی نیست و همه افرادی که مشغول یادگیری برنامه نویسی پایتون هستند میتوانند از این پروژه برای تقویت مهارت خود استفاده کنند. در پلتفرم فرادرس دورههای آموزش پایتون در قالب یک مجموعه گردآوری شدهاند که علاقهمندان به برنامه نویسی پایتون میتوانند برای شروع یادگیری از دورههای مقدماتی آن استفاده کنند. همچنین، چندین دوره آموزشی پروژهمحور نیز در این مجموعه برای ادامه یادگیری و تقویت مهارت برنامه نویسی پایتون در دسترس قرار دارند. در تصویر فوق تنها برخی از دورههای آموزشی مجموعه آموزش پایتون فرادرس ملاحظه میشوند.
- برای دسترسی به همه آموزش های پایتون فرادرس + اینجا کلیک کنید.
۵. کدنویسی حالت اتمام بازی در صورت برخورد مار با دیواره ها
در بازی مار، اگر بازیکن به دیوارههای صفحه برخورد کند، بازنده خواهد شد. جهت پیادهسازی این حالت با پایتون در این مقاله آموزشی از یک گزاره if استفاده شده است. در این if بررسی میشود که محدودههای مختصات x و y برای مار از مختصات صفحه بازی کوچکتر باشند.
همچنین، باید این مورد را هم مد نظر قرار داد که کدهای منبع (Hardcodeها) در اینجا حذف شدهاند و به جای آنها از چند متغیر استفاده شده است تا در صورت نیاز به ایجاد تغییراتی در بازی، بتوان این تغییرات را به آسانی در کدها انجام داد.
- مقاله پیشنهادی از مجله فرادرس برای مطالعه: دستورات شرطی در پایتون — به زبان ساده
در صورت برخورد مار به دیوارههای صفحه، بازی تمام میشود و خروجی به صورت زیر خواهد بود:

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

۶. قرار دادن غذا برای رشد مار در ساخت بازی مار با پایتون
در این بخش از آموزش ساخت بازی مار با پایتون ، غذا برای مار در صفحه بازی اضافه میشود و وقتی که مار غذا را میخورد، پیامی با عنوان «Yummy!!» (یعنی بهبه!!) در ترمینال نمایش داده خواهد شد. علاوه بر این، تغییر کوچک دیگری هم اعمال شده است که در آن گزینههایی برای خروج از بازی یا شروع مجدد بازی در زمان بازنده شدن بازیکن لحاظ شدهاند:
تصویر خروجی به صورت زیر است:

همچنین در هنگام بازی و با خوردن غذا به وسیله مار، خروجی ترمینال چیزی شبیه به تصویر زیر خواهد بود:

حال پس از اضافه کردن المان غذا در ساخت بازی مار با پایتون ، نوبت به پیادهسازی قابلیت افزایش طول مار با خوردن غذا فرا رسیده است. کدهای مربوط به این کارکرد در بخش بعدی ارائه شدهاند.
پیادهسازی بازیها با پایتون به غیر از نوعی تمرین کدنویسی و طراحی الگوریتم بسیار خوب و جنبه سرگرمی که دارد، باعث آشنایی با تکنولوژیهای مختلف نیز میشود. یکی دیگر از بهترین تمرینها در این زمینه پیادهسازی بازی منچ است. برای آموزش و مشاهده یکی از تکنیکهای خوب برای پیادهسازی منچ در پایتون مطلب آموزش ساخت بازی منچ با پایتون، به زبان ساده و همراه با کد را از مجله فرادرس مطالعه کنید.
۷. افزایش طول مار در ساخت بازی مار با پایتون
کدهایی که در ادامه این بخش از آموزش ساخت بازی مار با پایتون آمدهاند، برای افزایش اندازه مار در زمانی هستند که مار غذا میخورد. علاوه بر این، اگر مار با بدن خودش برخورد کند، بازی تمام میشود و کاربر پیامی حاوی متن زیر را دریافت خواهد کرد:
- You Lost! Press Q-Quit or C-Play Again (یعنی: شما باختید، برای خروج کلید Q و برای شروع دوباره، کلید C را بزنید)
طول مار اساساً در داخل یک لیست پایتون قرار گرفته و اندازه اولیهای که در کدهای زیر تعیین شده، یک بلوک است:
برای درک بهتر خروجی آنچه در کدهای فوق انجام شده در ادامه به صورت تصویر متحرک نشان داده شده است:

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

۸. نمایش امتیاز بازیکن در ساخت بازی مار با پایتون
آخرین اما نه کم اهمیتترین گام در ساخت بازی مار با پایتون ، نمایش امتیاز بازیکن در صفحه است. برای انجام این کار، باید یک تابع جدید مثلاً با نام «Your_score» ایجاد شود. این تابع طول مار منهای یک را نمایش خواهد داد؛ علت اینکه به مقدار یک از طول مار کم میشود این است که طول اولیه مار در هنگام شروع بازی یک است.
تصویر خروجی پیادهسازی عملکرد نمایش امتیاز بازیکن روی صفحه در ادامه آمده است:

به این ترتیب به انتهای آموزش ساخت بازی مار با پایتون رسیدهایم. امید است این مقاله آموزشی واضح و قابل فهم بوده باشد.
بازی سازی به وسیله پایتون از فعالیتهای رایج بعضی از برنامهنویسان است که اهداف تجاری را دنبال میکنند. اما اما گاهی پیش میآید که هدف از ساخت بازی تقویت مهارتهای برنامهنویسی است و این مسئله در زمان آموزش پایتون زیاد اتفاق میافتد. به عنوان مثال از ساخت بازی دوز با پایتون میتوان به عنوان یکی از مسائل تمرینی کدنویسی یاد کرد.
در انتها به برخی از سوالات رایج پیرامون ساخت بازی مار در پایتون پاسخ داده شده است.
سوالات رایج ساخت بازی مار با پایتون
در این بخش با هدف راهنمایی افرادی که به دنبال یادگیری نحوه ساخت بازی مار با پایتون هستند، به ارائه پاسخ به برخی از سوالات رایج پیرامون این موضوع پرداخته شده است.
ساخت بازی مار با پایتون چگونه انجام میشود؟
بهطور کلی مراحل ساخت یک بازی مار ساده با پایتون را میتوان به ۸ گام مختلف دستهبندی کرد. ابتدا باید مجموعه ماژولهای مخصوص بازی برای پایتون یعنی Pygame را نصب کرد. سپس صفحه بازی ایجاد میشود و بعد هم باید مار را ساخت. در ادامه نیز حرکت دادن مار پیادهسازی می شود. پس از آن هم لازم است کدهای مربوط به اتمام بازی در صورت برخورد مار با دیواره صفحه نوشته شوند. سپس غذا برای پیشرفت بازی و بزرگتر شدن مار اضافه میشود. در انتها هم باید ساز و کار افزودن طول مار با خوردن غذا و در نهایت، کدنویسی نمایش امتیاز را انجام داد.
آیا من هم میتوانم ساخت بازی مار با پایتون را انجام دهم؟
بازی مار یکی از محبوبترین بازیهای Arcade در تمام دوران به حساب میآید. ساخت بازی مار با پایتون به عنوان یک چالش در حین یادگیری برنامه نویسی پایتون و آموزش ساخت بازی در پایتون با Pygame انجام میشود. تلاش برای پیادهسازی این پروژه تمرینی میتواند تا حد زیادی به یادگیری پایتون و تقویت مهارت برنامه نویسی با این زبان کمک کند و افراد میتوانند از منابع آموزشی مرتبط برای یادگیری نحوه ساخت بازی مار با پایتون کمک بگیرند.
نصب Pygame پایتون در ویندوز به چه صورت است؟
نصب Pygame در پایتون را میتوان به چهار گام تقسیم کرد. در مرحله اول بررسی میشود که خود پایتون حتماً روی سیستم نصب شده باشد. سپس باید بررسی کرد که PIP هم نصب باشد. در مرحله سوم نوبت به نصب Pygame فرا میرسد. در آخر هم باید بررسی کرد که آیا Pygame به درستی کار میکند یا خیر؟
ماژول Pygame در پایتون چیست؟
کتابخانه Pygame مجموعهای از ماژولهای پایتون به حساب میآید که برای ساخت بازیهای کامپیوتری مورد استفاده قرار میگیرد. Pygame قابلیتهای عملکردی افزودهای را برای ساخت بازی با پایتون به کتابخانه بینظیر SDL اضافه میکند. Pygame برای برنامه نویسان این امکان را فراهم میسازد تا بتوانند بازیهایی را با قابلیتهای جامع بسازند. Pygame به میزان زیادی جابجاپذیر است و میتوان آن را تقریباً روی هر پلتفرم و سیستم عاملی اجرا کرد.
جمعبندی
در یادگیری پایتون باید اطمینان حاصل کرد که تا جای امکان تمرینها و پروژههای عملی انجام شوند تا بتوان تجربه لازم را کسب کرد و مهارت برنامه نویسی پایتون را در سطح یک فرد حرفهای و متخصص به دست آورد. به همین دلیل در این مقاله از مجله فرادرس آموزش ساخت بازی مار با پایتون ارائه شده است. استفاده از این مقاله خصوصاً برای افرادی مناسب است که قصد فعالیت در زمینه ساخت بازی با پایتون را دارند. در صورتی که سوالی پیرامون این مقاله وجود دارد، مخاطبان میتوانند آن را از طریق بخش نظرها درمیان بگذارند. در آینده مقالههای آموزشی پروژهمحور بیشتری برای پایتون و سایر زبانهای برنامه نویسی در مجله فرادرس ارائه خواهند شد.
سلام خیلی ممنون . کار میکنه و برای کسانی که ارور میده فکر کنم باید بعضی از کتابخانه هار و نصب کنید. میخواستم بپرسم میشه جای کلید ها رو عوض کرد؟
سلام وقتی کد پایانی رو ران میکنیم اصلا خرکت نمیکنه
با سلام و احترام؛
کد پایانی، تست شده و بدون مشکل اجرا میشود.
ممنون از همراهی شما با مجله فرادرس
سلام
وقتی pygame.init() رو میزنم ارور میده میگه
module ‘pygame’ has no attribute ‘init’
باید چیکار کنم؟
بعد اجرا هیچ حرکتی از مار نمیبینم کد رو جز به جز نوشتم میشه بگید مشکل از کجاست ممنون
واسه منم همین بود کدو کپی کردم درست شد اصلا وقتی کدو خودم نوشتم حدود ۴۰ تا ارور داد و لی وقتی کپی کردم کاملا درست بود
اولش حرکت نمی کنه خودت باید حرکتش بدی
این بازی عالی است.
سلام
ببخشید pygame رو نصب نمیکنه
یعنی وقتی میخوام import رو بزنم ارور میده
قبلش از دستور pip install pygame استفاده کردم
سلام.می تونین از یک روش برید:اگر اپ command prompt را دارید برید داخلش pip install pygame را بنویسید و enter را بزنید.اگر بعد چند ثانیه کلمه ی successfully installed pygame یعنی دانلود شده
سلام چطور از چند تا کد خروجی بگیرم ؟
سلام چطور از چند تا کد به صورت زنده خروجی بگیرم ؟
ببحشید بعد اجرا هیچ حرکتی ار مار نمیبینم کد رو جز به جز نوشتم میشه بگید مشکل از کجاست ممنون
باید روی Run بزنی بعد هم 3 تا گزینه داره گزینه سومی رو انتخاب کن
import pygame,sys
import pygame.locals as GAME_GLOBALS
import pygame.event as GAME_EVENTS
pygame.init()
window=pygame.display.set_mode((500,600))
pygame.display.set_caption(‘game1’)
x=0
y=0
speedx=2
speedy=10
a=10
b=0
wX=10
wY=10
flg=0
wA=10
wB=10
while True:
window.fill((50,205,50))
pygame.draw.rect(window,(138,43,255),(x,y,wX,wY))
pygame.draw.rect(window,(255,0,0),(a,b,10,10))
x+=speedx
if x > 499 – wX:
y+=0
speedx = -10
if x (1000 – 500):
y = 0
if b > (1000- 500):
b = 0
if x + 10 < a :
wX+=1
print(wX)
print(x)
b+=speedy
flg=1
print(y)
#y+=speedy
#print(x)
#print(y)
for event in GAME_EVENTS.get():
if event.type==GAME_GLOBALS.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
سلام خسته نباشید ببخشید من همه کد هارو نوشتم ولی وقتی میزنم ک بازی بیاد صفحه باز میشه ولی متحرک نیستن میدونید مشکلش چیه؟
سلام من کدی به اسم foody ندارم چیکار کنم؟وقتی میزنم میگه همچین کدی نیست
import pygame
ببخشید موقع اجرا ب این خط گیرمیده
متنشم اینه :
No module named ‘pygame’
با سلام و احترام؛
صمیمانه از همراهی شما با مجله فرادرس و ارائه بازخورد سپاسگزاریم.
برای رفع این باگ لازم است به پوشه python و سپس scripts وارد شوید و در این مسیر یک صفحه خط فرمان باز و در آن دستور زیر را وارد کنید:
C:\python34\scripts> python -m pip install pygame
حالا برای تست اینکه مشکل حل شده است یا خیر، در کد ادیتور یا IDE کدهای زیر را اجرا کنید:
import pygame
print (pygame.ver)
امیدواریم با این راهکار مشکل برطرف شود.
برای شما آرزوی سلامتی و موفقیت داریم.