آموزش ساخت بازی ساده با پایتون و کتابخانه Pygame

آموزش ساخت بازی ساده با پایتون و کتابخانه Pygame
آکادمی آی تی
آکادمی آی تی
dots

آموزش ساخت بازی ساده با پایتون و کتابخانه Pygame

زمان مورد نیاز برای مطالعه 5 دقیقه

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

دپارتمان ‌ها: آموزش برنامه نویسی
1404/02/23
108 بازدید

آموزش ساخت بازی ساده با پایتون و کتابخانه Pygame

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

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

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

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

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

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

نصب و راه‌اندازی Pygame

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

پیش‌نیازها

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

  1. پایتون نسخه 3.6 یا بالاتر: می‌توانید آن را از وب‌سایت رسمی پایتون دانلود کنید.
  2. نرم‌افزار ویرایش کد: پیشنهاد ما استفاده از Visual Studio Code یا PyCharm است، چون این ابزارها قابلیت‌هایی مثل تکمیل خودکار کد و دیباگینگ دارند.
  3. اتصال به اینترنت: برای دانلود و نصب Pygame از مدیر بسته‌های پایتون (pip) استفاده می‌کنیم.
  4. فضای کاری مناسب: یک پوشه پروژه روی سیستم خود ایجاد کنید تا فایل‌های کدها و منابع بازی را در آن ذخیره کنید.

اگر تازه‌کار هستید، نگران نباشید؛ ما همه مراحل را با جزئیات توضیح می‌دهیم تا هیچ ابهامی باقی نماند. در آکادمی آی تی، هدف ما این است که یادگیری برای مبتدیان ساده و لذت‌بخش باشد.

مراحل نصب Pygame

نصب Pygame با چند دستور ساده در ترمینال یا Command Prompt انجام می‌شود. برای اطمینان از نصب درست، مراحل زیر را به‌دقت دنبال کنید:

  1. بررسی نصب پایتون:

    • ترمینال یا   Command Prompt  را باز کنید.
    • دستور python --version را وارد کنید.
    • اگر نسخه پایتون نمایش داده شد، به مرحله بعد بروید. در غیر این صورت، پایتون را از وبسایت رسمی پایتون دانلود و نصب کنید.
  2. نصب Pygame:

    • در ترمینال، دستور زیر را اجرا کنید:
      pip install pygame
      
    • این دستور Pygame را از مخزن PyPI دانلود و نصب می‌کند.
    • صبر کنید تا فرآیند نصب کامل شود.
  3. تأیید نصب کتابخانه Pygame:

    • یک فایل جدید به نام test.py ایجاد کنید.
    • کد زیر را در آن قرار دهید:
      import pygame
      pygame.init()
      print("Pygame is installed successfully!")
      pygame.quit()
      
    • فایل را اجرا کنید. اگر پیام چاپ شد و خطایی دریافت نکردید، Pygame با موفقیت نصب شده است.

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

مفاهیم اولیه Pygame

مفاهیم اولیه Pygame

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

آشنایی با پنجره بازی

هر بازی در Pygame در یک پنجره گرافیکی اجرا می‌شود که می‌توانید اندازه، عنوان و رنگ پس‌زمینه آن را تنظیم کنید. این پنجره بوم اصلی بازی شماست که تمام عناصر گرافیکی مثل شخصیت‌ها، اشیا و پس‌زمینه در آن نمایش داده می‌شوند. برای ایجاد یک پنجره ساده، باید از ماژول pygame.display استفاده کنید. کد زیر یک پنجره 800x600 پیکسل ایجاد می‌کند که می‌توانید با کلیک روی دکمه بسته شدن آن را ببندید:

import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("My First Game")
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill((0, 0, 0))  # Black background
    pygame.display.flip()
pygame.quit()

در این کد، موارد زیر انجام می‌شود:

  • ()pygame.init: تمام ماژول‌های Pygame را آماده می‌کند.
  • set_mode((width, height)): یک پنجره با ابعاد مشخص ایجاد می‌کند.
  • ()set_caption: عنوان پنجره را تنظیم می‌کند.
  • ()screen.fill: پس‌زمینه را با رنگ مشکی پر می‌کند.
  • ()pygame.display.flip: تغییرات را روی صفحه نمایش می‌دهد.

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

کار با رویدادها و ورودی‌ها

بازی‌ها بدون تعامل با کاربر جذابیت چندانی ندارند. در Pygame، ورودی‌های کاربر مثل فشار دادن کلیدهای کیبورد، کلیک ماوس یا حتی حرکت دادن جوی‌استیک به‌صورت رویداد (event) پردازش می‌شوند. شما می‌توانید با استفاده از حلقه رویدادها، به این ورودی‌ها واکنش نشان دهید و بازی را تعاملی کنید. برای مثال، بیایید کدی بنویسیم که وقتی کلید Space را فشار می‌دهید، یک پیام چاپ کند و اگر کلید جهت‌نمای راست را بزنید، یک پیام دیگر نمایش دهد:

import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Handling Events")
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                print("Space key pressed!")
            elif event.key == pygame.K_RIGHT:
                print("Right arrow key pressed!")
    screen.fill((0, 0, 0))
    pygame.display.flip()
pygame.quit()

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

ساخت یک بازی ساده (بازی Snake)

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

طراحی بازی

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

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

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

پیاده‌سازی منطق بازی

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

import pygame
import random
pygame.init()

# Game settings
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Snake Game")

# Colors
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)

# Snake and food
snake = [(200, 200)]
snake_dir = (20, 0)
food = (random.randrange(0, width, 20), random.randrange(0, height, 20))
score = 0

# Main loop
clock = pygame.time.Clock()
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP and snake_dir != (0, 20):
                snake_dir = (0, -20)
            elif event.key == pygame.K_DOWN and snake_dir != (0, -20):
                snake_dir = (0, 20)
            elif event.key == pygame.K_LEFT and snake_dir != (20, 0):
                snake_dir = (-20, 0)
            elif event.key == pygame.K_RIGHT and snake_dir != (-20, 0):
                snake_dir = (20, 0)

    # Move snake
    head = (snake[0][0] + snake_dir[0], snake[0][1] + snake_dir[1])
    snake.insert(0, head)

    # Check for food collision
    if head == food:
        score += 1
        food = (random.randrange(0, width, 20), random.randrange(0, height, 20))
    else:
        snake.pop()

    # Check for wall or self collision
    if head[0] < 0 or head[0] >= width or head[1] < 0 or head[1] >= height or head in snake[1:]:
        running = False

    # Render
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, RED, (food[0], food[1], 20, 20))
    for segment in snake:
        pygame.draw.rect(screen, GREEN, (segment[0], segment[1], 20, 20))
    pygame.display.flip()
    clock.tick(10)

pygame.quit()

این کد یک بازی کامل Snake ایجاد می‌کند که در آن:

  1. مار با کلیدهای جهت‌نما حرکت می‌کند.
  2. با خوردن غذا، امتیاز افزایش می‌یابد و مار رشد می‌کند.
  3. اگر مار به دیوار یا خودش برخورد کند، بازی تمام می‌شود.
  4. سرعت بازی با clock.tick(10) تنظیم شده که می‌توانید آن را تغییر دهید.

افزودن تصاویر و صداها

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

  • استفاده از تصاویر:

    • به‌جای مستطیل، از تصاویر PNG برای مار و غذا استفاده کنید. می‌توانید این تصاویر را از سایت‌های رایگان مثل OpenGameArt.org دانلود کنید.
    • کد زیر نحوه بارگذاری و نمایش تصاویر را نشان می‌دهد:
      snake_img = pygame.image.load("snake.png")
      food_img = pygame.image.load("food.png")
      # In the render section
      screen.fill((0, 0, 0))
      screen.blit(food_img, (food[0], food[1]))
      for segment in snake:
          screen.blit(snake_img, (segment[0], segment[1]))
      
  • اضافه کردن صداها:

    • برای وقتی مار غذا می‌خورد، یک افکت صوتی اضافه کنید. فایل‌های WAV به دلیل حجم کم و پشتیبانی خوب در Pygame مناسب‌اند.
    • کد زیر نحوه افزودن صدا را نشان می‌دهد:
      eat_sound = pygame.mixer.Sound("eat.wav")
      if head == food:
          eat_sound.play()
          score += 1
          food = (random.randrange(0, width, 20), random.randrange(0, height, 20))
      

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

منابع بیشتر برای یادگیری

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

منبع توضیحات
مستندات رسمی Pygame وب‌سایت pygame.org اطلاعات کاملی درباره توابع و ماژول‌های Pygame ارائه می‌دهد.
کتاب پیشنهادی کتاب "Beginning Game Development with Python and Pygame" نوشته Will McGugan، یک منبع عالی برای یادگیری عمیق‌تر.
ویدیوهای آموزشی کانال‌های یوتیوبی مثل Sentdex و FreeCodeCamp آموزش‌های ویدیویی رایگانی دارند که پروژه‌های متنوعی را پوشش می‌دهند.
دوره‌های آکادمی آی تی دوره‌های جامع آموزش بازی‌سازی با پایتون در آکادمی آی تی، شما را از مبتدی به حرفه‌ای تبدیل می‌کند.

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

با آکادمی آی تی به دنیای بازی‌سازی قدم بگذارید!

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