بکندباز

چطور با پایتون بازی بسازیم؟

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

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

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

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

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

۱. پایتون – زبان اصلی بازی‌سازی ما

اولین چیزی که برای ساخت یک بازی با پایتون نیاز داریم، خود زبان پایتون است. اگر پایتون را روی سیستم خود نصب نکرده‌اید، می‌توانید آن را از سایت رسمی Python.org دانلود و نصب کنید. پیشنهاد می‌شود از نسخه ۳.x استفاده کنید، زیرا اکثر کتابخانه‌های مدرن بازی‌سازی بر اساس این نسخه توسعه داده شده‌اند.

چرا پایتون برای بازی‌سازی مناسب است؟

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

۲. Pygame – محبوب‌ترین فریمورک بازی‌سازی دوبعدی

یکی از قدرتمندترین و پرکاربردترین کتابخانه‌ها برای توسعه بازی‌های ۲D در پایتون، Pygame است. این کتابخانه بر پایه SDL (Simple DirectMedia Layer) توسعه یافته و امکانات زیادی برای مدیریت گرافیک، ورودی‌های کاربر، صوت، انیمیشن و غیره ارائه می‌دهد.

✅ ویژگی‌های کلیدی Pygame:

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

🔹 نصب Pygame:
برای نصب این کتابخانه کافی است دستور زیر را در ترمینال یا CMD وارد کنید:

pip install pygame
Bash

۳. Arcade – جایگزینی مدرن و بهینه‌تر از Pygame

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

✅ ویژگی‌های کلیدی Arcade:

  • پشتیبانی از OpenGL برای گرافیک‌های سریع‌تر
  • کدنویسی ساده و خواناتر
  • مناسب برای بازی‌های مدرن و پیکسلی

🔹 نصب Arcade:

pip install arcade
Bash

۴. Panda3D – ساخت بازی‌های سه‌بعدی با پایتون

اگر قصد دارید بازی‌های ۳D بسازید، Panda3D گزینه مناسبی است. این موتور بازی توسط استودیوی Disney توسعه یافته و از رندرینگ سه‌بعدی، فیزیک و انیمیشن‌های پیچیده پشتیبانی می‌کند.

✅ ویژگی‌های کلیدی Panda3D:

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

🔹 نصب Panda3D:

pip install panda3d
Bash

۵. Godot Engine (با پشتیبانی از پایتون)

Godot یکی از بهترین موتورهای بازی‌سازی دو‌بعدی و سه‌بعدی است که پشتیبانی از پایتون (GDScript و Python API) را نیز ارائه می‌دهد. این موتور رقیب Unity و Unreal Engine محسوب می‌شود.

✅ ویژگی‌های کلیدی Godot:

  • رابط کاربری گرافیکی برای طراحی بازی
  • پشتیبانی از زبان‌های مختلف، از جمله Python و GDScript
  • ابزارهای حرفه‌ای برای انیمیشن و فیزیک پیشرفته

🔹 دانلود Godot:
می‌توانید موتور Godot را از سایت Godotengine.org دانلود کنید.

۶. سایر ابزارهای کاربردی برای بازی‌سازی با پایتون

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

  • PyOpenGL – برای ساخت بازی‌های سه‌بعدی سفارشی با OpenGL
  • Cocos2d – برای توسعه بازی‌های موبایلی دوبعدی
  • Pyglet – برای طراحی گرافیکی سبک و ساده
  • Blender – برای مدل‌سازی و انیمیشن‌های سه‌بعدی که در بازی‌ها استفاده می‌شود

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

نصب و راه‌اندازی محیط برنامه‌نویسی برای ساخت بازی با پایتون

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

۱. نصب پایتون و بررسی نسخه مناسب

ابتدا باید مطمئن شویم که Python 3.x روی سیستم ما نصب شده است. برای بررسی این موضوع، کافی است در ترمینال (macOS/Linux) یا CMD (Windows) دستور زیر را وارد کنیم:

python --version
Bash

یا اگر پایتون روی سیستم شما با دستور python اجرا نمی‌شود، امتحان کنید:

python3 --version
Bash

اگر نسخه‌ای از Python 3.x نمایش داده شد، یعنی پایتون نصب است. اما اگر پیام خطا دریافت کردید، باید پایتون را نصب کنید.

🔹 دانلود و نصب پایتون:

  1. به سایت رسمی Python مراجعه کنید.
  2. آخرین نسخه Python 3.x را دانلود و نصب کنید.
  3. در هنگام نصب گزینه Add Python to PATH را فعال کنید تا بتوانید آن را از هر جایی اجرا کنید.

پس از نصب، دوباره دستور python --version را اجرا کنید تا مطمئن شوید که پایتون به درستی نصب شده است.

۲. نصب Pygame و سایر فریمورک‌های بازی‌سازی

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

📌 نصب Pygame

pip install pygame
Bash

برای تست اینکه Pygame به درستی نصب شده است، دستور زیر را اجرا کنید:

import pygame
print(pygame.ver)
Python

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

📌 نصب Arcade (جایگزین مدرن‌تر Pygame)

pip install arcade
Bash

📌 نصب Panda3D (برای بازی‌های سه‌بعدی)

pip install panda3d
Bash

📌 نصب سایر ابزارهای موردنیاز (در صورت نیاز)

pip install pyglet
pip install pyopengl
Bash

۳. انتخاب و تنظیم محیط توسعه (IDE)

یک محیط برنامه‌نویسی مناسب می‌تواند تجربه توسعه بازی را سریع‌تر و راحت‌تر کند. برای بازی‌سازی با پایتون، چند گزینه محبوب وجود دارد:

✅ ۱. Visual Studio Code (VS Code)

VS Code یکی از بهترین ویرایشگرهای کد است که برای توسعه بازی در پایتون پیشنهاد می‌شود.
🔹 مزایا:

  • سبک و سریع
  • پشتیبانی از افزونه‌های پایتون
  • یکپارچگی با Git، ترمینال داخلی، و دیباگر پیشرفته
آموزش مرتبط:  چطور قسمتی از یک فایل صوتی را با پایتون کات کنیم؟

📌 نصب افزونه پایتون برای VS Code
پس از نصب VS Code، افزونه Python را از بخش Extensions نصب کنید تا پشتیبانی کامل از پایتون فعال شود.

✅ ۲. PyCharm

اگر به دنبال یک محیط حرفه‌ای‌تر هستید، PyCharm گزینه‌ای عالی است.
🔹 مزایا:

  • دارای دیباگر قوی و تکمیل خودکار پیشرفته
  • مدیریت داخلی مجازی‌سازی پایتون (Virtual Environment)
  • مخصوص برنامه‌نویسی پایتون طراحی شده است

📌 دانلود PyCharm:
می‌توانید نسخه Community (رایگان) را از JetBrains دانلود کنید.

✅ ۳. IDLE (محیط پیش‌فرض پایتون)

اگر می‌خواهید با محیطی ساده و سبک کار کنید، می‌توانید از IDLE (که همراه با نصب پایتون روی سیستم شما قرار دارد) استفاده کنید.

۴. ایجاد اولین پروژه بازی و اجرای تست اولیه

حالا که همه چیز آماده است، بیایید یک تست ساده انجام دهیم تا مطمئن شویم که محیط بازی‌سازی ما به درستی کار می‌کند.

📌 ساخت یک پنجره ساده در Pygame:
فایل جدیدی به نام game.py ایجاد کرده و کد زیر را در آن قرار دهید:

import pygame

pygame.init()

# تنظیمات صفحه بازی
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("بازی تستی من")

# رنگ‌ها
white = (255, 255, 255)

# حلقه اصلی بازی
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill(white)  # پاک کردن صفحه
    pygame.display.update()  # به‌روزرسانی صفحه

pygame.quit()
Python

🔹 اجرای کد:
برای اجرای برنامه، دستور زیر را در ترمینال یا CMD وارد کنید:

python game.py
Bash

🔹 نتیجه:
یک پنجره خالی با نام “بازی تستی من” باز می‌شود که نشان می‌دهد محیط برنامه‌نویسی به درستی راه‌اندازی شده است.

۵. رفع مشکلات احتمالی در هنگام نصب

اگر در هنگام نصب یا اجرا با خطاهایی مواجه شدید، موارد زیر را بررسی کنید:

🔹 خطای ‘pip not found’ در هنگام نصب:

  • اطمینان حاصل کنید که در هنگام نصب پایتون، گزینه Add Python to PATH را فعال کرده‌اید.
  • از این دستور برای نصب مجدد pip استفاده کنید:
    python -m ensurepip --default-pip
    Bash

🔹 عدم شناسایی Pygame در هنگام اجرا:

  • بررسی کنید که نصب پایتون شما با نسخه‌ای که Pygame را روی آن نصب کرده‌اید، یکسان باشد.
    python -m pip show pygame
    Bash
  • در صورت نیاز، Pygame را حذف و دوباره نصب کنید:
    pip uninstall pygame
    pip install pygame
    Bash

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

اصول اولیه بازی‌سازی در پایتون

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

  • حلقه بازی (Game Loop) – قلب تپنده‌ی هر بازی
  • مدیریت رویدادها (Event Handling) – تعامل بازی با کاربر
  • رندرینگ و نمایش گرافیک – نمایش اشیا روی صفحه

۱. حلقه بازی (Game Loop) – قلب تپنده‌ی هر بازی

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

در هر لحظه، بازی باید کارهای زیر را انجام دهد:

  1. دریافت ورودی از کاربر (مثلاً فشار دادن دکمه‌ها)
  2. به‌روزرسانی وضعیت بازی (مثلاً حرکت کاراکتر یا تغییر مکان اشیا)
  3. نمایش تغییرات روی صفحه

📌 نمونه یک حلقه بازی ساده در Pygame

import pygame

pygame.init()

# تنظیمات صفحه بازی
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("حلقه بازی در Pygame")

# رنگ پس‌زمینه
white = (255, 255, 255)

# حلقه اصلی بازی
running = True
while running:
    screen.fill(white)  # پاک کردن صفحه و تنظیم رنگ پس‌زمینه

    for event in pygame.event.get():
        if event.type == pygame.QUIT:  # خروج از بازی در صورت بسته شدن پنجره
            running = False

    pygame.display.update()  # به‌روزرسانی صفحه

pygame.quit()
Python

🔹 آنالیز کد:

  • در حلقه while running، بازی همیشه در حال اجرا است.
  • اگر کاربر پنجره را ببندد، متغیر running = False شده و بازی متوقف می‌شود.
  • screen.fill(white) صفحه را با رنگ سفید پر می‌کند.
  • pygame.display.update() صفحه را به‌روز می‌کند تا تغییرات گرافیکی نمایش داده شوند.

۲. مدیریت رویدادها (Event Handling) – تعامل با کاربر

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

✅ برخی از رویدادهای مهم در Pygame: رویداد توضیح
pygame.QUIT کاربر پنجره بازی را می‌بندد
pygame.KEYDOWN کاربر دکمه‌ای را روی کیبورد فشار می‌دهد
pygame.KEYUP کاربر دکمه کیبورد را رها می‌کند
pygame.MOUSEBUTTONDOWN کاربر روی ماوس کلیک می‌کند
pygame.MOUSEMOTION حرکت ماوس شناسایی می‌شود

📌 دریافت ورودی از کیبورد برای حرکت دادن یک شی

import pygame

pygame.init()

width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("مدیریت رویدادها در Pygame")

# رنگ‌ها
white = (255, 255, 255)
red = (255, 0, 0)

# موقعیت شیء
x, y = 100, 100
speed = 5

running = True
while running:
    screen.fill(white)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # دریافت کلیدهای فشرده شده
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:  
        x -= speed
    if keys[pygame.K_RIGHT]:  
        x += speed
    if keys[pygame.K_UP]:  
        y -= speed
    if keys[pygame.K_DOWN]:  
        y += speed

    pygame.draw.rect(screen, red, (x, y, 50, 50))  # رسم یک مربع قرمز

    pygame.display.update()

pygame.quit()
Python

🔹 نحوه عملکرد کد:

  • اگر کاربر دکمه‌های جهتی را فشار دهد، مقدار x یا y تغییر می‌کند.
  • در هر فریم، یک مربع قرمز بر اساس مختصات جدیدش رسم می‌شود.
  • بازی به طور مداوم به‌روزرسانی می‌شود تا حرکت شیء نمایش داده شود.

۳. رندرینگ و نمایش اشیا در بازی

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

🔹 ۱. رسم اشکال ساده (مستطیل، دایره، خط، چندضلعی)

pygame.draw.rect(screen, (255, 0, 0), (50, 50, 100, 100))  # مستطیل قرمز
pygame.draw.circle(screen, (0, 0, 255), (200, 200), 50)  # دایره آبی
pygame.draw.line(screen, (0, 255, 0), (300, 300), (400, 400), 5)  # خط سبز
Python

🔹 ۲. نمایش تصاویر (Sprites)

player_img = pygame.image.load("player.png")  # بارگذاری تصویر
screen.blit(player_img, (x, y))  # نمایش تصویر در موقعیت مشخص
Python

🔹 ۳. انیمیشن با تغییر موقعیت تصویر در هر فریم

x += 2  # حرکت تصویر به سمت راست
screen.blit(player_img, (x, y))
Python

در این بخش یاد گرفتیم که:
✅ بازی‌ها دارای یک حلقه بازی (Game Loop) هستند که به طور مداوم اجرا می‌شود.
✅ مدیریت رویدادها (Event Handling) به ما کمک می‌کند تا ورودی‌های کیبورد و ماوس را پردازش کنیم.
✅ می‌توانیم با استفاده از رسم اشکال و نمایش تصاویر (Rendering) اشیا را در صفحه بازی نمایش دهیم.

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

آموزش مرتبط:  تفاوت لیست و تاپل در پایتون چیست؟

ساخت یک بازی ساده با Pygame

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

✅ نمایش توپ و دو راکت
✅ حرکت دادن راکت‌ها با کلیدهای کیبورد
✅ برخورد توپ به دیوارها و راکت‌ها
✅ افزایش امتیاز در صورت ضربه به توپ
✅ نمایش امتیازات در صفحه

۱. طراحی و برنامه‌ریزی بازی

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

ساختار بازی:

  • توپ که در صفحه حرکت می‌کند و پس از برخورد تغییر مسیر می‌دهد.
  • دو راکت که با کلیدهای کیبورد حرکت می‌کنند.
  • نمایش امتیاز برای هر بازیکن.

۲. پیاده‌سازی محیط بازی و نمایش اشیا

ابتدا یک پنجره بازی ایجاد کرده و توپ و راکت‌ها را در صفحه نمایش می‌دهیم:

import pygame

pygame.init()

# تنظیمات صفحه
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("بازی پینگ پنگ با Pygame")

# رنگ‌ها
black = (0, 0, 0)
white = (255, 255, 255)

# تنظیمات راکت‌ها
paddle_width, paddle_height = 10, 100
left_paddle = pygame.Rect(30, height//2 - 50, paddle_width, paddle_height)
right_paddle = pygame.Rect(width - 40, height//2 - 50, paddle_width, paddle_height)

# تنظیمات توپ
ball = pygame.Rect(width//2 - 15, height//2 - 15, 30, 30)
ball_speed_x, ball_speed_y = 4, 4

running = True
while running:
    screen.fill(black)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # رسم اشیا
    pygame.draw.rect(screen, white, left_paddle)
    pygame.draw.rect(screen, white, right_paddle)
    pygame.draw.ellipse(screen, white, ball)

    pygame.display.update()

pygame.quit()
Python

✅ توضیحات:

  • یک صفحه ۸۰۰×۶۰۰ پیکسلی ایجاد کردیم.
  • دو راکت را در دو سمت صفحه نمایش دادیم.
  • یک توپ سفید را در وسط صفحه رسم کردیم.

۳. اضافه کردن حرکت راکت‌ها

حالا اجازه می‌دهیم بازیکنان با کلیدهای W و S (راکت چپ) و Up و Down (راکت راست) راکت‌های خود را حرکت دهند:

# سرعت حرکت راکت‌ها
paddle_speed = 6

while running:
    screen.fill(black)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # دریافت کلیدهای فشرده‌شده
    keys = pygame.key.get_pressed()

    # حرکت راکت چپ
    if keys[pygame.K_w] and left_paddle.top > 0:
        left_paddle.y -= paddle_speed
    if keys[pygame.K_s] and left_paddle.bottom < height:
        left_paddle.y += paddle_speed

    # حرکت راکت راست
    if keys[pygame.K_UP] and right_paddle.top > 0:
        right_paddle.y -= paddle_speed
    if keys[pygame.K_DOWN] and right_paddle.bottom < height:
        right_paddle.y += paddle_speed

    pygame.draw.rect(screen, white, left_paddle)
    pygame.draw.rect(screen, white, right_paddle)
    pygame.draw.ellipse(screen, white, ball)

    pygame.display.update()
Python

✅ حالا بازیکنان می‌توانند با کلیدهای مشخص‌شده راکت‌های خود را حرکت دهند!

۴. افزودن حرکت توپ و بررسی برخوردها

اکنون توپ را حرکت می‌دهیم و بررسی می‌کنیم که اگر به دیوارها یا راکت‌ها برخورد کرد، جهتش تغییر کند:

# سرعت توپ
ball_speed_x, ball_speed_y = 4, 4

while running:
    screen.fill(black)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_w] and left_paddle.top > 0:
        left_paddle.y -= paddle_speed
    if keys[pygame.K_s] and left_paddle.bottom < height:
        left_paddle.y += paddle_speed
    if keys[pygame.K_UP] and right_paddle.top > 0:
        right_paddle.y -= paddle_speed
    if keys[pygame.K_DOWN] and right_paddle.bottom < height:
        right_paddle.y += paddle_speed

    # حرکت توپ
    ball.x += ball_speed_x
    ball.y += ball_speed_y

    # برخورد توپ به دیوار بالا و پایین
    if ball.top <= 0 or ball.bottom >= height:
        ball_speed_y *= -1

    # برخورد توپ به راکت‌ها
    if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):
        ball_speed_x *= -1  # تغییر جهت حرکت توپ

    pygame.draw.rect(screen, white, left_paddle)
    pygame.draw.rect(screen, white, right_paddle)
    pygame.draw.ellipse(screen, white, ball)

    pygame.display.update()
Python

✅ اکنون توپ حرکت می‌کند و هنگام برخورد به دیوارها یا راکت‌ها تغییر جهت می‌دهد.

۵. افزودن سیستم امتیازدهی و پایان بازی

در این مرحله:

  • اگر توپ از سمت چپ یا راست صفحه خارج شود، بازیکن مقابل امتیاز می‌گیرد.
  • امتیازات روی صفحه نمایش داده می‌شوند.
font = pygame.font.Font(None, 50)
score_left, score_right = 0, 0

while running:
    screen.fill(black)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_w] and left_paddle.top > 0:
        left_paddle.y -= paddle_speed
    if keys[pygame.K_s] and left_paddle.bottom < height:
        left_paddle.y += paddle_speed
    if keys[pygame.K_UP] and right_paddle.top > 0:
        right_paddle.y -= paddle_speed
    if keys[pygame.K_DOWN] and right_paddle.bottom < height:
        right_paddle.y += paddle_speed

    ball.x += ball_speed_x
    ball.y += ball_speed_y

    if ball.top <= 0 or ball.bottom >= height:
        ball_speed_y *= -1
    if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):
        ball_speed_x *= -1

    # بررسی امتیازات
    if ball.left <= 0:
        score_right += 1
        ball.x, ball.y = width//2, height//2
        ball_speed_x *= -1
    if ball.right >= width:
        score_left += 1
        ball.x, ball.y = width//2, height//2
        ball_speed_x *= -1

    score_text = font.render(f"{score_left} - {score_right}", True, white)
    screen.blit(score_text, (width//2 - 30, 20))

    pygame.draw.rect(screen, white, left_paddle)
    pygame.draw.rect(screen, white, right_paddle)
    pygame.draw.ellipse(screen, white, ball)

    pygame.display.update()
Python

✅ حالا یک بازی کامل پینگ‌پنگ داریم!

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

بهبود بازی: اضافه کردن صدا، انیمیشن و تجربه کاربری بهتر

در این بخش، بازی پینگ‌پنگی که ساختیم را حرفه‌ای‌تر و جذاب‌تر می‌کنیم. برای این کار:

✅ افکت‌های صوتی برای برخورد توپ با راکت‌ها و دیوارها اضافه می‌کنیم.
✅ افکت‌های گرافیکی مانند تغییر رنگ و نمایش حرکت نرم‌تر توپ را اضافه خواهیم کرد.
✅ یک صفحه شروع (Start Screen) و صفحه پایان (Game Over) اضافه خواهیم کرد.

۱. اضافه کردن افکت‌های صوتی به بازی

افکت‌های صوتی باعث می‌شوند بازی حس واقعی‌تری پیدا کند. در Pygame می‌توانیم از pygame.mixer برای پخش صداهای مختلف هنگام برخورد توپ یا کسب امتیاز استفاده کنیم.

🔹 ابتدا فایل‌های صوتی مورد نیاز را دانلود کنید:

  • ball_hit.wav (برای برخورد توپ با راکت یا دیوار)
  • score.wav (برای امتیاز گرفتن)

⚠ نکته: فایل‌های صوتی را در پوشه پروژه ذخیره کنید.

🔹 اضافه کردن کد برای پخش صدا:

# اضافه کردن ماژول صوتی
pygame.mixer.init()
hit_sound = pygame.mixer.Sound("ball_hit.wav")
score_sound = pygame.mixer.Sound("score.wav")
Python

حالا در بخش برخورد توپ به راکت‌ها یا دیوار، صدا پخش می‌کنیم:

if ball.top <= 0 or ball.bottom >= height:
    ball_speed_y *= -1
    pygame.mixer.Sound.play(hit_sound)  # پخش صدای برخورد

if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):
    ball_speed_x *= -1
    pygame.mixer.Sound.play(hit_sound)  # پخش صدای برخورد

if ball.left <= 0 or ball.right >= width:
    pygame.mixer.Sound.play(score_sound)  # پخش صدای امتیاز
Python

✅ حالا هنگام برخورد توپ با دیوارها و راکت‌ها، صدای مناسبی پخش خواهد شد!

۲. بهبود گرافیک و روان‌تر کردن انیمیشن‌ها

برای بهتر شدن گرافیک بازی، می‌توانیم تغییرات زیر را اعمال کنیم:
✅ اضافه کردن خط وسط زمین برای جدا کردن دو سمت بازی.
✅ حرکت نرم‌تر توپ و راکت‌ها با استفاده از FPS.
✅ تغییر رنگ زمینه در هنگام امتیاز گرفتن.

🔹 اضافه کردن خط وسط زمین:

pygame.draw.line(screen, white, (width//2, 0), (width//2, height), 2)
Python

🔹 افزودن FPS برای حرکت نرم‌تر:

clock = pygame.time.Clock()
while running:
    clock.tick(60)  # تنظیم سرعت بازی روی 60 فریم بر ثانیه
Python

🔹 تغییر رنگ پس‌زمینه هنگام امتیاز گرفتن:

if ball.left <= 0 or ball.right >= width:
    screen.fill((255, 0, 0))  # تغییر موقت پس‌زمینه به قرمز
    pygame.display.update()
    pygame.time.delay(500)  # توقف ۰.۵ ثانیه برای نمایش رنگ جدید
    screen.fill(black)  # بازگرداندن رنگ اصلی
Python

✅ اکنون بازی روان‌تر اجرا شده و از نظر گرافیکی جذاب‌تر است.

آموزش مرتبط:  دستورات شرطی در پایتون - با مثال های کاربردی و تمرین

۳. ایجاد صفحه شروع (Start Screen)

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

🔹 اضافه کردن صفحه شروع:

def show_start_screen():
    screen.fill(black)
    title = font.render("Pygame Ping Pong", True, white)
    instruction = font.render("Press Space to Start", True, white)

    screen.blit(title, (width//2 - 100, height//2 - 50))
    screen.blit(instruction, (width//2 - 120, height//2 + 20))
    pygame.display.update()

    waiting = True
    while waiting:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()
            if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                waiting = False

show_start_screen()  # نمایش صفحه شروع قبل از شروع بازی
Python

✅ اکنون بازی تا زمانی که کاربر کلید Space را فشار ندهد، شروع نمی‌شود.

۴. ایجاد صفحه پایان (Game Over Screen)

وقتی یکی از بازیکنان به ۵ امتیاز برسد، صفحه “پایان بازی” نمایش داده شده و امکان شروع مجدد فراهم می‌شود.

🔹 افزودن شرط پایان بازی:

def show_game_over_screen(winner):
    screen.fill(black)
    game_over_text = font.render(f"{winner} Wins!", True, white)
    restart_text = font.render("Press R to Restart", True, white)

    screen.blit(game_over_text, (width//2 - 100, height//2 - 50))
    screen.blit(restart_text, (width//2 - 120, height//2 + 20))
    pygame.display.update()

    waiting = True
    while waiting:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()
            if event.type == pygame.KEYDOWN and event.key == pygame.K_r:
                waiting = False

# بررسی پایان بازی
if score_left >= 5:
    show_game_over_screen("Left Player")
    score_left, score_right = 0, 0  # بازنشانی امتیازات
    show_start_screen()

if score_right >= 5:
    show_game_over_screen("Right Player")
    score_left, score_right = 0, 0  # بازنشانی امتیازات
    show_start_screen()
Python

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

در این بخش یاد گرفتیم که چگونه:
✅ افکت‌های صوتی را برای برخورد توپ و امتیازدهی اضافه کنیم.
✅ گرافیک بازی را بهبود دهیم و انیمیشن‌ها را نرم‌تر کنیم.
✅ یک صفحه شروع (Start Screen) قبل از شروع بازی نمایش دهیم.
✅ یک صفحه پایان (Game Over Screen) ایجاد کنیم تا در صورت برد بازیکن، امکان شروع مجدد فراهم شود.

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

گام بعدی: تبدیل بازی به نسخه اجرایی و انتشار آن!

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

انتشار بازی: تبدیل به فایل اجرایی و اجرا در پلتفرم‌های مختلف

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

۱. تبدیل بازی پایتونی به فایل اجرایی (EXE) برای ویندوز

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

✅ مرحله ۱: نصب PyInstaller

pip install pyinstaller
Bash

✅ مرحله ۲: تبدیل فایل بازی به EXE
برای تبدیل کد بازی (game.py) به یک فایل اجرایی، این دستور را در CMD یا ترمینال اجرا کنید:

pyinstaller --onefile --windowed game.py
Bash

🔹 توضیحات:

  • --onefile باعث می‌شود که تمام فایل‌های مورد نیاز در یک فایل EXE فشرده شوند.
  • --windowed باعث می‌شود پنجره ترمینال نمایش داده نشود (برای بازی‌ها ضروری است).

✅ مرحله ۳: اجرای فایل EXE
پس از اجرای دستور بالا، در فولدر dist/ یک فایل با نام game.exe ایجاد می‌شود که می‌توانید آن را اجرا کنید!

💡 نکته: اگر بازی شما به فایل‌های صوتی یا تصاویر نیاز دارد، هنگام اجرای PyInstaller، این فایل‌ها را نیز در خروجی قرار دهید:

pyinstaller --onefile --add-data "ball_hit.wav;." --add-data "score.wav;." game.py
Bash

✅ حالا بازی شما به یک فایل EXE مستقل تبدیل شده و می‌توانید آن را به اشتراک بگذارید!

۲. تبدیل بازی به فایل اجرایی در مک و لینوکس

🔹 برای مک:

pyinstaller --onefile --windowed game.py
Bash

پس از اجرا، فایل .app در پوشه dist/ ایجاد خواهد شد.

🔹 برای لینوکس:

pyinstaller --onefile game.py
Bash

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

✅ حالا بازی شما روی هر سیستم‌عاملی اجرا می‌شود!

۳. اجرای بازی روی وب (پخش آنلاین)

برای اینکه کاربران بتوانند بدون دانلود بازی، آن را در مرورگر خود بازی کنند، دو راه وجود دارد:

۱. استفاده از Pygbag (اجرای بازی پایتونی در مرورگر)

🔹 نصب pygbag:

pip install pygbag
Bash

🔹 اجرای بازی در مرورگر:

pygbag --run game.py
Bash

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

۲. استفاده از RenPy یا Godot برای تبدیل به WebGL

🔹 اگر بازی شما پیچیده‌تر است، می‌توانید آن را به Godot Engine منتقل کرده و از آنجا خروجی HTML5 (WebGL) بگیرید.

✅ حالا بازی شما می‌تواند در مرورگر اجرا شود!

۴. انتشار بازی در استورهای مختلف

حالا که بازی شما آماده شده، می‌توانید آن را در مارکت‌های معروف منتشر کنید:

🔹 انتشار در Itch.io (بزرگ‌ترین مارکت بازی‌های مستقل)

  1. در سایت Itch.io ثبت‌نام کنید.
  2. روی Create New Project کلیک کنید.
  3. فایل اجرایی (یا نسخه Web) را آپلود کنید.

🔹 انتشار در Steam (با Steamworks SDK)

  1. در سایت Steamworks ثبت‌نام کنید.
  2. بازی را برای بررسی ارسال کنید.
  3. پس از تأیید، بازی شما در Steam منتشر خواهد شد!

✅ حالا دیگران می‌توانند بازی شما را دانلود و بازی کنند!

جمع‌بندی نهایی: از صفر تا انتشار بازی با پایتون

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

🚀 اکنون شما یک بازی‌ساز واقعی هستید! شاید این اولین بازی شما باشد، اما اگر همین مسیر را ادامه دهید، می‌توانید بازی‌های حرفه‌ای‌تری بسازید و حتی از آن درآمد کسب کنید!

گام بعدی برای شما:

💡 آیا دوست دارید بازی پیچیده‌تری مانند یک پلتفرمر دوبعدی (شبیه ماریو) بسازید؟
💡 یا شاید بخواهید با استفاده از هوش مصنوعی، دشمنان هوشمندی در بازی خود ایجاد کنید؟

✅ به من بگویید که گام بعدی شما چیست تا در یادگیری بازی‌سازی بیشتر راهنمایی‌تان کنم! 🚀

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*