در اینجا نحوه اضافه کردن سطوح به بازی خود آورده شده است تا آن را جذاب تر و لذت بخش تر کنید.
سطوح یکی از جنبه های ضروری اکثر بازی های ویدیویی است. آنها ساختار، چالش و تنوع را ارائه می دهند و می توانند تجربه بازیکن را به میزان قابل توجهی افزایش دهند. PyGame، یک کتابخانه محبوب پایتون برای توسعه بازی، ویژگی های مختلفی را ارائه می دهد که با آن می توانید سطوح مختلف را به راحتی ایجاد کنید. یک سطح خوب طراحی شده می تواند بازیکن را مجذوب خود کند، حس پیشرفت را ایجاد کند و در نهایت به آنها برای تلاش هایشان پاداش دهد.
سطوح برنامه ریزی و طراحی
قبل از ایجاد سطوح، برنامه ریزی و طراحی آنها ضروری است. سطوح برنامه ریزی به ایجاد یک بازی ساختاریافته کمک می کند که سطح دشواری مناسبی را برای بازیکنان فراهم می کند. برای برنامه ریزی سطوح باید عوامل مختلفی مانند مکانیک بازی، داستان و ساختار کلی بازی را در نظر بگیرید.
به عنوان مثال، اگر در حال طراحی یک بازی پلتفرمر هستید، باید به محل قرارگیری پلتفرم ها، دشمنان و موانع فکر کنید. همچنین باید حرکت بازیکن مانند پریدن و دویدن را در نظر بگیرید و طبق آن سطوح را طراحی کنید.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
ایجاد دو سطح ساده
قبل از شروع، مطمئن شوید که پیپ را روی سیستم خود نصب کرده اید. برای نصب کتابخانه pygame از این دستور استفاده کنید:
pip install pygame
اکنون، دو سطح ساده با یک پلتفرم و یک بازیکن ایجاد کنید. این کد برای سطح اول است:
import pygame
pygame.init()
# Define constants
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 100
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)
# Create the screen
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Create the platform
platform = pygame.Rect(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)
# Create the player
player = pygame.Rect(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)
# Game loop
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_LEFT:
player.move_ip(-10, 0)
elif event.key == pygame.K_RIGHT:
player.move_ip(10, 0)
# Fill the screen with black color
screen.fill((0, 0, 0))
# Draw the platform
pygame.draw.rect(screen, PLATFORM_COLOR, platform)
# Draw the player
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Update the screen
pygame.display.flip()
pygame.quit()
پس از آن، به سادگی با تغییر پلت فرم و موقعیت بازیکن، سطح دوم را ایجاد کنید. این کد برای سطح دوم است:
import pygame
pygame.init()
# Define constants
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 150
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)
# Create the screen
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Create the platform
platform = pygame.Rect(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)
# Create the player
player = pygame.Rect(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)
# Game loop
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_LEFT:
player.move_ip(-10, 0)
elif event.key == pygame.K_RIGHT:
player.move_ip(10, 0)
# Fill the screen with black color
screen.fill((0, 0, 0))
# Draw the platform
pygame.draw.rect(screen, PLATFORM_COLOR, platform)
# Draw the player
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Update the screen
pygame.display.flip()
pygame.quit()
این کد مشابه سطح اول است، اما پلت فرم و موقعیت های بازیکن تغییر می کند.
اتصال سطوح مختلف
برای اتصال سطوح مختلف، باید حلقه بازی را تغییر دهید تا زمانی که بازیکن یک سطح را کامل می کند، بین سطوح جابجا شود. شما می توانید این کار را با ایجاد یک متغیر برای پیگیری سطح فعلی و استفاده از عبارات شرطی برای جابجایی بین سطوح انجام دهید. همچنین می توانید برخوردها را شناسایی کنید تا بررسی کنید که آیا بازیکن به پایان یک سطح رسیده است یا خیر.
در اینجا حلقه بازی تغییر یافته است:
current_level = 1
# Draw the platform and the player based on the current level
if current_level == 1:
pygame.draw.rect(screen, PLATFORM_COLOR, platform1)
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Check if the player has reached the end of the level
if player.colliderect(platform1) == False:
current_level = 2
elif current_level == 2:
pygame.draw.rect(screen, PLATFORM_COLOR, platform2)
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Check if the player has reached the end of the level
if player.colliderect(platform2) == True:
running = False
به اشتراک گذاری داده های بازی بین سطوح
شما باید داده های بازی را ذخیره کنید تا بین سطوح به اشتراک بگذارید. برای این کار، یک ماژول پایتون جداگانه برای ذخیره داده های بازی ایجاد کنید و آن را به هر سطح وارد کنید.
در اینجا مراحل انجام می شود:
- یک ماژول جدید پایتون به نام game_data.py ایجاد کنید.
- یک متغیر سراسری در ماژول game_data.py برای ذخیره موقعیت بازیکن تعریف کنید.
- در هر سطح، ماژول game_data را وارد کنید.
- برای بازیابی موقعیت بازیکن در هر سطح، به جای ایجاد یک شی بازیکن جدید، از متغیر game_data.player_pos استفاده کنید.
- برای به روز رسانی موقعیت بازیکن، مقدار game_data.player_pos را در هر تکرار تغییر دهید.
در اینجا کد اصلاح شده برای به اشتراک گذاشتن موقعیت بازیکن بین سطوح است.
در ماژول game_data.py کد زیر را اضافه کنید:
player_pos = (0, 0)
سطح اول:
import pygame
import game_data
# Create the player
player = pygame.Rect(game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)
# Game loop
running = True
while running:
# Draw the player
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Update the player's position in the game_data module
game_data.player_pos = (player.x, player.y)
بازی ها را با سطوح جذاب تر کنید
اضافه کردن سطوح مختلف به بازی شما می تواند آن را برای بازیکنان جذاب تر و لذت بخش تر کند. با اتصال سطوح و به اشتراک گذاری داده های بازی، می توانید یک تجربه بازی یکپارچه و منسجم ایجاد کنید. این می تواند به بازیکنان کمک کند تا در دنیای بازی غوطه ور بمانند و احتمال جدایی یا بی حوصلگی را کاهش دهند.