کد بازی ماشین در پایتون – به زبان ساده + طراحی و اجرا

۸
۱۴۰۴/۱۰/۲
۱۶ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

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

آنچه در این مطلب می‌آموزید:
  • با پیش‌نیاز‌های مهم در زمان ساخت بازی با پایتون آشنا می‌شوید.
  • چند مورد از ماژول‌های کاربردی برای اجرای پروژه‌های بازی را می‌شناسید.
  • روش استفاده از شیءگرایی برای ساخت بازی و نوشتن متد‌های مرتبط را یاد می‌گیرید.
  • با بازی ماشین ساده آشنا شده و روش پیاده‌سازی عناصر مهم آن را می‌آموزید.
  • روش ساخت پنجره بازی و قرار دادن المان‌های آن را در کتابخانه pygame یاد می‌گیرید.
  • می‌آموزید که چگونه با کمک متد render در pygame متن‌ها را برای نمایش در صفحه آماده کنید.
کد بازی ماشین در پایتون – به زبان ساده + طراحی و اجراکد بازی ماشین در پایتون – به زبان ساده + طراحی و اجرا
997696

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

پیش‌نیازهای توسعه کد بازی ماشین در پایتون

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

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

  1. نصب پایتون نسخه ۳: زبان برنامه نویسی پایتون اوپن سورس و رایگان است. بنابراین به راحتی می‌توانید با مراجعه به وب‌سایت رسمی در لینک (+) نسخه‌های مختلف آن را دانلود کرده و استفاده کنید. برای ساخت این بازی از پایتون نسخه ۳.۱۳ استفاده کرده‌ایم. این نسخه، جدید‌ترین نسخه متناسب با «Pygame» است.
  2. نصب IDE یا ویرایشگر متن مناسب: برای نوشتن و اجرای کدهای این بازی می‌توان از هر «ویرایشگر متن» (Text Editor) یا «محیط توسعه یکپارچه‌ای» (Integrated Development Environment | IDE) استفاده کرد. به عنوان نمونه «PyCharm» و «Visual Studio Code» و «Sublime Text» و «++Notepad» به عنوان چند مورد از مناسب‌ترین محیط‌های برنامه نویسی پایتون هستند. در این مطلب از نرم‌افزار ویژوال استودیو کد استفاده می‌کنیم.
  3. عکس‌ عناصر بازی: برای ساخت این بازی به عکس‌های ماشین، جاده‌ها، ماشین دشمن و پس‌زمینه محیط نیاز داریم. باید این تصاویر در زمان ساخت بازی در مکان مشخص شده قرار بگیرند. می‌توانید تمام عکس‌ها را از اینجا (+) دانلود کرده و داخل همان پوشه‌ای که فایل پایتونی بازی قرار دارد، قرار بدهید.
پیش‌نیازهای توسعه کد بازی ماشین در پایتون
پیش‌نیازهای توسعه کد بازی ماشین در پایتون

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

عکسی از اجرای پروژه بازی ماشین ساخته شده در این مطلب
عکسی از اجرای پروژه بازی ماشین، ساخته شده در این مطلب

ماژول‌های مورد نیاز

بعد از تهیه کردن پیش‌نیاز‌های اصلی، به سراغ مرحله بعد می‌رویم. این مرحله، شامل دانلود و نصب تمام ماژول‌ها و کتابخانه‌های مورد نیاز پروژه است. برای توسعه و اجرای توسعه کد بازی ماشین در پایتون باید ماژول‌های زیر را در پایتون نصب کرده و در محیط برنامه نویسی ایمپورت کنیم.

  • Pygame: این کتابخانه با هدف کمک به ساخت بازی‌های دوبعدی‌ و سه‌بعدی در پایتون ارائه شده است. Pygame پر از ماژول‌های متنوعی است که برای ساخت بازی‌های ویدئویی طراحی شده‌اند. این کتابخانه شامل تصاویر گرافیکی مختلف و ماژول‌های صوتی است که برای استفاده در بازی‌های پایتون به کار برده می‌شوند. Pygame را می‌توانید با کمک pip در پایتون نصب کنید. فقط کافی است که دستور زیر را در خط فرمان یا ترمینال نوشته و اجرا بکنید.
py -3.13 -m pip install pygame --user

نکته: دستور بالا مربوط به نصب Pygame بر روی پایتون نسخه ۳.۱۳ است. از این دستور زمانی استفاده کنید که چند نسخه مختلف پایتون بر روی کامپیوتر، نصب شده‌اند.

چند تابع پرکاربرد از کتابخانه pygame
چند مورد از توابع پرکاربرد کتابخانه Pygame در زمان ساخت بازی
  • Random:‌ ماژول Random، جزو ماژول‌های درونی پایتون است. این ماژول برای ساخت اعداد تصادفی به کار برده می‌شود. در زمان ساخت بازی ماشین از این ماژول برای ساخت موانع تصادفی و حرکت آن‌ها استفاده خواهیم کرد.
  • Sys: ماژول «Sys» هم جزو ماژول‌های درونی یا «Built-In» در پایتون است. در این ماژول، توابعی برای دسترسی به متغیر‌های مورد استفاده توسط مفسر پایتون تعبیه شده‌اند. با کمک این متغیر‌ها می‌توان به مفسر پایتون دسترسی داشت. از این ماژول برای خروج از بازی استفاده می‌کنیم. هر وقت که بازیکن گزینه «Quit» را انتخاب کند، باید فضای بازی بسته شوند.

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

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

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

pip install pygame
pip install random

بعد از اینکه نصب ماژول‌ها با موفقیت به پایان رسید، شروع به توسعه بازی ماشین می‌کنیم.

یادگیری ساخت بازی با پایتون در فرادرس

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

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

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

در ادامه، مراحل پیاده‌سازی کد بازی ماشین در پایتون را بررسی می‌کنیم.

پیاده‌سازی کد بازی ماشین در پایتون

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

در ابتدا باید ماژول‌های مورد نیاز را در محیط کدنویسی خود ایمپورت بکنیم.

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

متد __init__

در کادر پایین، متد __init__()  این کلاس را نوشته‌ایم. متد __init__ در پایتون کاربرد‌های مهمی دارد.

در فهرست زیر، متغیر‌ها و توابع فراخوانی شده در متد __init__()  را توضیح داده‌ایم.

  1. کد pygame.init()  متد __init__()  از ماژول pygame  را مقداردهی اولیه کرده است.
  2. بعضی از مقادیر مربوط به نمایش صفحه در این متد تنظیم می‌شوند. برای مثال می‌توان به عرض و ارتفاع صفحه نمایش (در خطوط ۳ و۴) اشاره کرد.
  3. بعضی از رنگ‌ها را هم در خطوط ۵ و ۶ این متد مشخص کرده‌ایم. یعنی کد RGB رنگ‌های سیاه و سفید تعریف شده‌اند.
  4. در خط بعد با کد pygame.time.Clock() برای بازی، ساعت ایجاد کردیم. این ساعت وظیفه کنترل سرعت بازی را بر عهده دارد. در واقع وظیفه اصلی آن مدیریت تعداد فریم‌های بازی در هر ثانیه است.
  5. متغیر gameDisplay  هم ساخته شده که در اول بازی مقدار آن برابر با None  است.
  6. در خط آخر از متد __init__()، متد self.initialize()  فراخوانی شده است. این متد را در بخش بعد توضیح می‌دهیم.
فرایند شروع ساخت کد بازی ماشین در پایتون

متد self.initialize

بعد از متد __init__()  نوبت به تعریف متد self.initialize()  می‌رسد. در کادر زیر این متد را پیاده‌سازی کرده‌ایم.

وظیفه متد initialize()  تنظیم چند مقدار اولیه در زمان شروع بازی است. این موارد را در فهرست پایین توضیح داده‌ایم.

  1. خط ۳:‌ متغیر crashed  دارای مقدار بولین است. در ابتدای بازی مقدار آن را برابر با False  قرار می‌دهیم. یعنی آن که بازی هنوز تمام نشده است.
  2. خط ۴: متغیر carImg  وظیفه نگهداری عکس ماشین را برعهده دارد. وقتی مفسر پایتون به این خط برسد، عکس ماشین از آدرس داده شده در بازی بارگذاری می‌شود.
  3. خطوط ۵ و ۶ و ۷: سپس موقعیت ماشین در زمان شروع بازی همراه با عرض و ارتفاع آن تنظیم می‌شود. منظور از عرض ماشین پهنای عکس نیست. بلکه حریم عرضی ماشین در زمان رد شدن از کنار موانع است. هر چه مقدار self.car_width  بیشتر باشد ماشین باید از فاصله دورتری نسبت به موانع رد بشود و برعکس.
  4. خط ۱۰: متغیر بعدی enemy_car  است. این متغیر عکس ماشین‌هایی است که در جهت برعکس حرکت می‌کنند. با مقداردهی به آن تصویر ماشین دشمن (مانع بازی) بارگذاری می‌شود.
  5. خطوط ۱۱ و ۱۲ و ۱۳: مختصات x  برای شروع به حرکت ماشین‌های دشمن به صورت تصادفی تعیین می‌شود. اما مختصات y و سرعت حرکت ماشین‌های دشمن ثابت هستند.
  6. خطوط ۱۴ و ۱۵: در خط بعد عرض ماشین دشمن مشخص شده است. بعد از آن هم ارتفاع ماشین دشمن مشخص می‌شود. هر ماشین دشمن در واقع یک فضای مستطیلی را اشغال می‌کند که با ورود به آن فضا تصادف کرده و بازی به پایان می‌رسد.
  7. خط ۱۸: تصویر پس‌زمینه محیط بازی را در متغیر self.bgImg  بارگذاری می‌کنیم.
  8. از خط ۱۹ تا ۲۳: سپس موقعیت شروع زمین بازی و سرعت حرکت آن را مشخص می‌کنیم.
  9. خط ۲۴: در این خط متغیر count  را تعریف می‌کنیم. مقدار این متغیر در ابتدای بازی برابر با 0  قرار داده شده است.

نکته: شماره خطوط نوشته شده در فهرست‌های مطلب مانند این فهرست، مربوط به کادر متناظر آن‌ها (در اینجا کادر بالا) هستند. در نسخه کامل کد، این شماره‌ها فرق کرده و به ترتیب از ابتدا تا انتها شماره‌گذاری شده‌اند.

متد __init__() وظیفه تنظیم مقادیر اولیه برای صفحه نمایش و کتابخانه pygame  را برعهده داشت. در حالی که متد initialize()  وظیفه مقداردهی اولیه به عناصر بازی مانند ماشین اصلی، ماشین‌های دشمن و تصویر پس زمینه را برعهده دارد.

متدهای car و racing_window

در کادر پایین، دو متد دیگر car() و racing_window() را تعریف کرده‌ایم.

در فهرست زیر عملکرد این متدها را توضیح می‌دهیم.

  • متد car() : وظیفه متد car() این است که ماشین را بر روی پنجره بازی حرکت بدهد. ابتدا مختصات x  و y  ماشین را دریافت می‌کند. سپس تصویر ماشین را بر روی مختصات دریافت شده از صفحه بازی قرار می‌دهد.
  • متد racing_window(): وظیفه راه‌اندازی پنجره بازی را برعهده دارد. این متد تیتر پنجره و اندازه آن را تنظیم می‌کند. در نهایت بعد از تنظیم کردن مشخصات صفحه بازی، متد run_car()  را فراخوانی کرده و بازی را شروع می‌کند.
تصویر از نمای بازی ماشین با لوگوی pygame

متد run_car

در کادر پایین متد run_car() را پیاده‌سازی کردیم. توجه کنید که تمام این متدها در داخل کلاس CarRacing  نوشته می‌شوند. در انتهای مطلب، تمام کدها را به صورت یکجا قرار داده‌ایم.

در این بلوک کد، حلقه اصلی بازی وجود دارد. این حلقه تا زمانی اجرا می‌شود که ماشین بازیکن با ماشین‌های دشمن برخورد کند یا از جاده خارج شود. در داخل حلقه while برنامه به طور دائم تمام رویداد‌های صادر شده از طرف بازیکن را بررسی کرده و ماشین را مطابق با رویداد مناسب حرکت می‌دهد.

  1. خطوط ۱۰ تا ۱۷:‌ در این بازی، بازیکن می‌تواند ماشین خود را به راست و چپ حرکت بدهد. برای انجام این حرکت‌ها باید از کلید‌های فلش راست و چپ بر روی کیبورد استفاده کند.
  2. خط ۲۰: سپس با کمک متد back_ground_road، جاده پس‌زمینه رسم می‌شود.
  3. خط ۲۲: بعد از رسم شدن این جاده باید ماشین‌های دشمن از بالا به پایین جاده حرکت بکنند. برای پیاده‌سازی این حرکت از متد run_enemy_car()  استفاده می‌کنیم.
  4. خطوط ۲۵ و ۲۶ و ۲۷: این برنامه در هر لحظه موقعیت ماشین دشمن را بررسی می‌کند. به محض اینکه ماشین دشمن از صفحه بازی خارج شد، دوباره از اول حرکت‌ آن ری‌استارت می‌شود. یعنی ماشین دشمن دوباره در بالای صفحه بازی ظاهر شده و از آنجا حرکت می‌کند. موقعیت ظاهر شدن ماشین دشمن در هر بار به صورت تصادفی مشخص می‌شود.
  5. خط۲۹: متد car() برای رسم ماشین بازیکن در پایین صفحه به کار برده می‌شود.
  6. خط ۳۰: برای به‌روزرسانی دائمی رکورد بازیکن هم از متد highscore()  استفاده می‌کنیم.
  7. از خط ۳۵ تا ۳۸: بعد از شروع بازی، برنامه دائما وضعیت تصادف بین خودرو بازیکن و دشمن را بررسی می‌کند. هر وقت که تصادفی روی بدهد، بازی تمام شده و بازیکن شکست می‌خورد. در این لحظه با استفاده از متد display_message()  پیغام Game Over  را بر روی صفحه بازی نمایش می‌دهیم.
  8. از خط ۴۰ تا ۴۲: به همین ترتیب، هر وقت که بازیکن از جاده خارج شود هم بازی به پایان می‌رسد. بنابراین باید پیغام Game Over  به بازیکن نشان داده شود.
  9. خط ۴۴: در نهایت هم صفحه نمایش را با استفاده از متد pygame.display.update()  دائما به‌روزرسانی می‌کنیم. این متد وظیفه نمایش تمام تغییرات به وجود آمده در بازی بر روی صفحه نمایش را برعهده دارد.
  10. خط ۴۵: نرخ فریم بازی با کمک کد self.clock.tick(60)  تنظیم می‌شود. این کد سرعت اجرای فریم‌ها را محدود‌ می‌کند. بیشینه سرعت اجرای بازی برابر با ۶۰ فریم در ثانیه است.
خودرو پورشه ۹۱۱ بر روی پیست تست - کد بازی ماشین در پایتون

متدهای display_message و back_ground_raod

در کادر پایین متدهای display_message()  و back_ground_raod()  را پیاده‌سازی کرده‌ایم. مشاهده می‌کنید که تمام رفتار‌های مهم به صورت متدها یا توابع داخل کلاس تعریف شده‌اند. برای درک و تسلط بیشتر بر این موضوع بهتر است دستور def در پایتون را شناخته و روش تعریف تابع با آن را بلد باشید. در صورت نیاز، پیشنهاد می‌کنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.

متد display_message()  مسئول نمایش پیام‌هاست. هر وقت که بازی به اتمام برسد این متد کار خود را انجام می‌دهد.

  1. خط ۱ و ۲:‌ این متد پارامتر msg  را از جنس رشته دریافت کرده و از تابع pygame.font.SysFont() برای ساخت فونت استفاده می‌کند. هر فونت نوع مشخص، اندازه و حالت Bold مخصوص به خود را دارد.
  2. خط ۳: این تابع از متد render()  برای ساخت شیء فونت استفاده می‌کند. متد render()  با کمک پیغام و رنگ مشخص شده، نمای مناسبی برای متن می‌سازد.
  3. خط ۴: متد blit()  متن مشخص شده را در مرکز صفحه نمایش بازی رسم می‌کند.
  4. خطوط ۵ تا ۸: متد display_credit()  برای نمایش مشخصات بازی فراخوانی می‌شود. بعد از فراخوانی این متد مدت زمان مشخصی (در اینجا ۱ ثانیه) صبر کرده و صفحه نمایش به‌روزرسانی می‌شود.
  5. خطوط ۹ و ۱۰: در نهایت دوباره متدهای initialize()  و racing_window() فراخوانی شده و بازی از اول شروع می‌شود.

متد back_ground_raod() مسئول نمایش جاده در پس‌زمینه بازی است.

  1. خط‌های ۱۳ و ۱۴: back_ground_raod() از متد blit()  برای نمایش تصویر جاده کمک می‌گیرد. عکس صفحه بازی دو بار در بالای همدیگر ایجاد می‌شوند. با این کار ظاهر جاده به صورت پیوسته و در حال اسکرول شدن از بالا به پایین نمایش داده می‌شود.
  2. خطوط ۱۷ و ۱۸: این کدها مسئول به‌روزرسانی دائمی موقعیت y  در عکس‌های جاده هستند. برای این کار، با استفاده از متغیر bg_speed  به طور دائم مقدار مختصات y  افزایش پیدا می‌کند.
  3. خطوط ۲۱ تا ۲۶: هر وقت که عکسی به انتهای پایین صفحه بازی برسد، دوباره ری‌استارت شده و از ابتدای بالا صفحه نمایش حرکت خود را شروع می‌کند.

متد run_enemy_car

در کادر زیر متد run_enemy_car()  برای شبیه‌سازی حرکت ماشین‌های دشمن پیاده‌سازی شده است.

همین‌طور که در کد بالا مشاهده می‌کنید، متد run_enemy_car()  دو آرگومان thingx  و thingy  را دریافت می‌کند. این آرگومان‌ها به ترتیب، وظیفه مشخص کردن مختصات x  و y  ماشین‌ دشمن را برعهده دارند. این متد با کمک تابع blit()  از کتابخانه pygame  عکس ماشین‌های دشمن را در صفحه نمایش، نشان می‌‌دهد. برای نمایش عکس ماشین بر روی صفحه نمایش باید از self.gameDisplay  استفاده کنیم. عکس ماشین دشمن به شکل دقیق در مختصات thingx  و thingy  رسم خواهد شد.

متد highscore

در کادر زیر، متد highscore()  را برای محاسبه و نمایش رکورد بازیکن پیاده‌سازی کرده‌ایم.

در فهرست زیر، کدهای این متد را یک به یک توضیح داده‌ایم.

  1. خط ۱: متد highscore()، آرگومان count  را دریافت می‌کند. این آرگومان برای نمایش رکورد فعلی بازیکن به کار برده می‌شود.
  2. خط ۲: در این متد با کمک تابع SysFont()  از کتابخانه pygame  فونت جدیدی ایجاد می‌کنیم.
  3. خط ۳: این متد، متن Score :  را همراه با شماره رکورد بر روی صفحه نمایش نشان می‌دهد. قبل از ارسال شماره رکورد به متد render()  باید آن را به رشته تبدیل بکنیم. در نهایت هم از متد render()  برای تبدیل کردن متن به عکس استفاده می‌کنیم.
  4. خط ۴: عکس ساخته شده به عنوان نمای جدیدی برای استفاده در صفحه نمایش به کار برده خواهد شد. برای نمایش این عکس از تابع blit()  کمک گرفته‌ایم. متن ساخته شده در گوشه بالا سمت چپ صفحه نمایش، ظاهر می‌شود.
سه ماشین مسابقه‌ای در حال حرکت سریع هستند لوگوی پایتون بر روی کاپوت ماشین وسط

متد display_credit

در کادر پایین، متد display_credit()  را پیاده‌سازی کرده‌ایم.

وظیفه متد display_credit()  نشان دادن پیام متنی کوچکی در گوشه پایین سمت راست صفحه نمایش بازی است. برای این کار، مختصات (600, 520)  را به متد gameDisplay.blit() ارسال کرده‌ایم. در این متن از بازیکن برای بازی‌ کردن تشکر می‌کنیم. عملکرد این متد هم شبیه به متد highscore() است.

  1. یعنی ابتدا با کمک کتابخانه pygame  فونت جدیدی ایجاد می‌کند.
  2. سپس با کمک تابع render()، متن ساخته شده را به عکس تبدیل می‌کند.
  3. سپس با کمک تابع blit()  عکس را در مختصات مشخص شده قرار می‌دهد.

این متن دقیقا در مختصات تعیین شده و بعد از به پایان رسیدن بازی نشان داده می‌شود.

کدهای مربوط به اجرای کلاس در اسکریپت

در کادر پایین، کدهای انتهای فایل برای اجرای کلاس بازی را نوشته‌ایم.

عبارت if __name__ == '__main__':  دستور شرطی است که بررسی می‌کند آیا همین فایل به عنوان برنامه اصلی اجرا شده است یا نه.

  1. اگر این شرط True  باشد، ابتدا نمونه‌ای از کلاس CarRacing  به نام car_racing  می‌سازد.
  2. سپس متد racing_window() را از شیء car_racing  فراخوانی می‌کند. این متد تمام متغیر‌های بازی را مقداردهی کرده و حلقه اصلی آن را اجرا می‌کند.

به طور خلاصه این بلوک کد در پایتون، بازی ماشین (توابع و کلاس‌های نوشته شده در اسکریپت) را وقتی اجرا می‌کند که همین اسکریپت به عنوان برنامه اصلی اجرا شده باشد.

چرخه کامل اجرای کدها برای پیاده‌سازی جریان بازی
چرخه کامل اجرای کدها برای پیاده‌سازی جریان بازی

با نوشتن این بلوک، بالاخره کد بازی ماشین در پایتون تمام شد. البته برای ساخت بازی ماشین روش‌های دیگری هم وجود دارد. با دستکاری این کدها می‌توانید ویژگی‌های بیشتری هم به بازی اضافه بکنید.

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

در کادر زیر، نسخه کامل کد بازی ماشین در پایتون را نوشته‌ایم.

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

چطور در فرادرس پایتون را بهتر یاد بگیریم؟

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

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

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

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

جمع‌بندی

در این مطلب از مجله فرادرس، کد بازی ماشین در پایتون را پیاده‌سازی کرده‌ایم. این نسخه، بازی ساده‌ای در دسته بازی‌های «Endless Runner» است. یعنی بازی‌هایی که حرکت بازیکن به صورت دائم برای کسب امتیازات بیشتر ادامه پیدا می‌کند. برای نوشتن بازی با پایتون از کتابخانه‌های Sys و Random و Pygame استفاده کرده‌ایم. ماژول Pygame به طور اختصاصی برای ساخت بازی در پایتون طراحی شده است. کتابخانه‌های Sys و Random هم برای انجام کارهای کمکی مانند تولید تصادفی مکان حرکت ماشین‌ دشمن و بستن صفحه برنامه به کار برده شده‌اند.

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
AlmaBetter
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *