سلام به همه علاقمندان به کدنویسی و بازی‌سازی! اگه همیشه دوست داشتید بدونید چطور میشه بازی‌های کامپیوتری ساخت و از این هیجان‌انگیزترین بخش دنیای برنامه‌نویسی سر دربیارید، جای درستی اومدید. تو این مقاله قراره با هم یک سفر جذاب رو شروع کنیم: ساخت بازی محبوب فلاپی بِرد (Flappy Bird) با و کتابخانه قدرتمند Pygame.

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


bird_y = 250  # موقعیت عمودی پرنده

bird_velocity = 0  # سرعت پرنده

gravity = 0.5  # شتاب گرانش

چرا پایتون؟ معرفی دوست‌داشتنی‌ترین زبان برنامه‌نویسی:

پایتون، همون رفیق برنامه‌نویسی که همه دوستش دارن! این زبان سطح بالا و چندمنظوره که سال ۱۹۹۱ توسط گیدو ون روسوم (Guido van Rossum) خلق شد، الان دیگه یکی از ستاره‌های دنیای تکنولوژیه. از توسعه نرم‌افزار و علم داده گرفته تا یادگیری ماشین و البته، ساخت بازی، پایتون تو همه این حوزه‌ها حرف برای گفتن داره.

پایتون چه ویژگی‌هایی داره که اینقدر محبوبه؟


while True:
    
    pass

    # بررسی رویدادها، به‌روزرسانی وضعیت و رسم گرافیک

بذارید چندتا از مهم‌ترین دلایل رو بهتون بگم:

۱. سادگی و خوانایی: بیشتر از اون چیزی که فکرشو بکنید!

سینتکس پایتون انقدر شبیه زبان طبیعیه که حس می‌کنید دارید یه متن عادی می‌نویسید، نه کد! همین باعث میشه یادگیریش خیلی راحت باشه و بتونید سریع‌تر ایده هاتون رو به کد تبدیل کنید.

۲. کتابخانه‌های فراوان و آماده به کار:


for event in pygame.event.get():

    if event.type == pygame.KEYDOWN:

        if event.key == pygame.K_SPACE:

            bird_velocity = -10  # پرنده به سمت بالا پرش می‌کند

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

۳. جامعه کاربری بزرگ و فعال:

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

۴. توسعه سریع پروژه‌ها:

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

۵. مقیاس‌پذیری فوق‌العاده:

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

آشنایی با Pygame: ابزار جادویی بازی‌سازی با پایتون

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

ویژگی‌های کلیدی Pygame چیست؟

۱. چند پلتفرمی بودن:

بازی‌هایی که با Pygame می‌سازید، بدون دردسر روی ویندوز، مک، لینوکس و حتی بعضی پلتفرم‌های دیگه اجرا میشن. یه بار بنویس، همه جا اجرا کن!

۲. سادگی در کاربرد و یادگیری:

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

۳. مدیریت آسان ورودی‌ها:

چه بخواید از کیبورد استفاده کنید، چه از موس یا حتی جوی‌استیک، Pygame ابزارهای لازم برای مدیریت ورودی‌های کاربر رو به سادگی در اختیارتون میذاره.

۴. ابزارهای گرافیکی پایه:

با Pygame می‌تونید به راحتی اشکال هندسی، متن و تصاویر رو تو بازی‌هاتون نمایش بدید و یه محیط بصری جذاب ایجاد کنید.

مزایا و معایب Pygame: یه نگاه واقع‌بینانه:

مثل هر ابزار دیگه‌ای، Pygame هم نقاط قوت و ضعف خودش رو داره:

مزایا:

رایگان و متن‌باز: Pygame کاملاً رایگانه و کد اون برای همه در دسترسه. این یعنی می‌تونید به راحتی ازش استفاده کنید و حتی اگه خواستید، توسعه‌اش بدید.

آموزش‌پذیری بالا: با وجود مستندات خوب و منابع آموزشی زیاد، یادگیری Pygame برای شروع خیلی آسونه.

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

ایده‌آل برای مبتدیان: اگه تازه وارد دنیای بازی‌سازی شدید، Pygame بهترین نقطه شروع برای شماست.

معایب:

محدودیت در گرافیک سه بعدی: Pygame عمدتاً برای بازی‌های دو بعدی طراحی شده و برای گرافیک‌های سه بعدی امکانات خیلی محدودی داره.

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

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

زیر درشت‌بین: Pygame چطور کار می‌کنه؟

Pygame با استفاده از توابع و کلاس‌های پایتون، یه چارچوب (Framework) برای ساخت بازی فراهم می‌کنه. قلب هر بازی Pygame، یه «حلقه اصلی» (Main Loop) هست. تو این حلقه، همه اتفاقات بازی مدیریت میشه: از دریافت ورودی‌های کاربر (مثل کلیک ماوس یا فشار دادن دکمه کیبورد) تا به‌روزرسانی وضعیت عناصر بازی (مثل حرکت پرنده یا ظاهر شدن موانع) و در نهایت، رندر کردن گرافیک روی صفحه. این حلقه به طور مداوم اجرا میشه و بازی رو زنده نگه می‌داره.

ساخت فلاپی بِرد قدم به قدم:

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

منطق فلاپی بِرد چیه؟

۱. حرکت پرنده: پرنده به طور خودکار به سمت پایین سقوط می‌کنه (جاذبه!) و با هر بار فشار دادن کلید (معمولاً Space)، یه پرش کوچیک به سمت بالا انجام میده.

۲. موانع (لوله ها): موانع به شکل لوله‌هایی هستن که از سمت راست صفحه به چپ حرکت می‌کنن. بین این لوله‌ها یه فضای خالی وجود داره که پرنده باید ازش عبور کنه. موقعیت این لوله‌ها به صورت تصادفی تولید میشه.

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

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

پیاده‌سازی با کد پایتون:

برای پیاده‌سازی این منطق، مراحل زیر رو تو کد پایتون دنبال می‌کنیم:

۱. تعریف متغیرهای اصلی:

اول از همه، باید متغیرهایی برای موقعیت پرنده، سرعتش، و البته نیروی جاذبه تعریف کنیم. مثلا:

bird_y = 250  # موقعیت عمودی پرنده
bird_velocity = 0 # سرعت عمودی پرنده
gravity = 0.5   # شتاب گرانش

۲. حلقه اصلی بازی:

همونطور که گفتیم، قلب بازی اینجاست. یه حلقه while True که تا زمانی که بازی در حال اجراست، همه چیز رو مدیریت می‌کنه:

while True:
    # اینجا رویدادها رو بررسی می‌کنیم
    # وضعیت پرنده و موانع رو به‌روزرسانی می‌کنیم
    # و در نهایت همه چی رو روی صفحه می‌کشیم
    pass

۳. کنترل ورودی کاربر:

برای پرش پرنده، باید فشار دادن دکمه‌ها رو تشخیص بدیم. این کار با بررسی رویدادها (events) تو Pygame انجام میشه:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            bird_velocity = -10 # پرنده به سمت بالا پرش می‌کنه

۴. رسم گرافیک:

بعد از به‌روزرسانی وضعیت، باید همه چیز رو روی صفحه نمایش بدیم. اول صفحه رو با یه رنگ پس‌زمینه پر می‌کنیم، بعد پرنده و موانع رو می‌کشیم:

screen.fill((255, 255, 255)) # رنگ پس‌زمینه سفید
pygame.draw.rect(screen, (255, 0, 0), (100, bird_y, 30, 30)) # رسم پرنده (یه مربع قرمز ساده)

۵. تشخیص برخورد:

یکی از مهم‌ترین قسمت‌ها، تشخیص برخورد پرنده با موانع یا زمین هست. Pygame توابع خوبی برای این کار داره، مثل colliderect:

if bird_rect.colliderect(pipe_rect):
    game_over() # تابع پایان بازی فراخوانی میشه

آماده‌سازی محیط کدنویسی با VS Code:

برای اینکه بتونید راحت کد بزنید و از امکانات خوب یه IDE مدرن استفاده کنید، پیشنهاد می‌کنیم از ویژوال استودیو کد (VS Code) استفاده کنید. مراحل نصب و راه‌اندازی رو اینجا براتون آوردیم:

۱. نصب پایتون:

اولین قدم نصب پایتون روی سیستمتونه. می‌تونید جدیدترین نسخه رو از دانلود و نصب کنید. حواستون باشه موقع نصب تیک Add Python to PATH رو بزنید.

۲. نصب ویژوال استودیو کد:

اگه هنوز VS Code رو ندارید، از دانلود و نصبش کنید.

۳. نصب اکستنشن‌های مورد نیاز:

بعد از نصب VS Code، واردش بشید و از بخش Extensions (آیکن مکعب در نوار کناری) افزونه‌های «Python» و «Pygame» رو جستجو و نصب کنید. این افزونه‌ها قابلیت‌های کدنویسی پایتون و Pygame رو تو VS Code فعال می‌کنن.

۴. ایجاد پروژه جدید:

یه پوشه جدید برای پروژه‌تون بسازید، مثلاً FlappyBirdGame. بعد این پوشه رو تو VS Code باز کنید (File > Open Folder). حالا یه فایل جدید به اسم main.py یا هر اسم دیگه‌ای که دوست دارید، داخل این پوشه بسازید و کد بازیتون رو توش بنویسید.

چند بازی دیگه که با Pygame ساخته شدن:

Pygame فقط برای فلاپی بِرد نیست! کلی بازی جذاب و خلاقانه دیگه هم با این کتابخونه ساخته شدن. مثلاً:

— Cave Story (نسخه غیر رسمی پایتون): یه بازی پلتفرمر ماجراجویی که نشون میده Pygame چقدر قدرتمنده.

— Solar War: یه بازی فضایی کلاسیک که با Pygame ساخته شده.

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

سوالات متداول:

آیا برای بازی‌سازی با Pygame حتماً باید برنامه‌نویس حرفه‌ای باشم؟

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

چقدر طول می‌کشه تا بتونم یه بازی ساده مثل فلاپی بِرد رو بسازم؟

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

آیا Pygame برای ساخت بازی‌های تجاری هم مناسبه؟

Pygame بیشتر برای بازی‌های کوچک، آموزشی، پروتوتایپ‌ها و پروژه‌های مستقل مناسبه. برای بازی‌های بزرگ و پیچیده با گرافیک سه‌بعدی پیشرفته، معمولاً از موتورهای بازی‌سازی قوی‌تر مثل Unity یا Unreal Engine استفاده میشه. اما برای شروع و یادگیری اصول بازی‌سازی، Pygame فوق‌العاده‌ست!

حرف آخر:

بازی‌سازی با پایتون و Pygame یه تجربه بی‌نظیره که نه تنها مهارت‌های برنامه‌نویسیتون رو تقویت می‌کنه، بلکه بهتون این امکان رو میده که ایده‌های خلاقانه‌تون رو به واقعیت تبدیل کنید. پس منتظر چی هستید؟ همین الان شروع کنید و اولین بازی خودتون رو بسازید. مطمئن باشید تو همیشه پشتیبانتون هستیم!


screen.fill((255, 255, 255))  # رنگ پس‌زمینه

pygame.draw.rect(screen, (255, 0, 0), (100, bird_y, 30, 30))  # رسم پرنده

if bird_rect.colliderect(pipe_rect):
    
    game_over()  # بازی به پایان می‌رسد