اصول اولیه یک پلتفرمر ساده را کاوش کنید و یاد بگیرید که چگونه امتیاز را حفظ کنید.
در این آموزش، نحوه نمایش و به روز رسانی نمرات بازی را در Pygame، یک کتابخانه محبوب پایتون برای توسعه بازی، خواهید آموخت. در پایان، میتوانید یک بازی جامپر ساده ایجاد کنید و امتیاز بازیکنان را در حین پیشرفت روی صفحه نمایش دهید. بازی ورودی صفحه کلید را ردیابی می کند تا بتوانید با استفاده از کلیدهای جهت نما، بازیکن را به چپ و راست حرکت دهید.
ایجاد یک بازی ساده
قبل از اینکه بتوانید امتیازات را در Pygame نمایش داده و به روز کنید، ابتدا باید یک بازی برای کار با آن ایجاد کنید. در این آموزش، شما یک بازی ساده ایجاد می کنید که در آن بازیکن می تواند به چپ یا راست حرکت کند. اما قبل از آن باید پیپ را روی دستگاه خود نصب کرده باشید. پس از نصب pip، دستور زیر را برای نصب ماژول pygame اجرا کنید:
pip install pygame
برای شروع، ماژول های لازم را وارد کرده و ساختار اصلی بازی را تنظیم کنید:
import pygame, sys
pygame.init()
# Set up the window
screen = pygame.display.set_mode((750, 450))
# Set up the game clock
clock = pygame.time.Clock()
# Set up the player character
player = pygame.Rect(100, 200, 50, 50)
# Set up the obstacle
obstacle = pygame.Rect(200, 200, 50, 50)
# Set up the game loop
while True:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.x -= 10
elif event.key == pygame.K_RIGHT:
player.x += 10
# Update the game state
# Draw the game
screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 0, 0), player)
pygame.draw.rect(screen, (0, 255, 0), obstacle)
# Update the display
pygame.display.flip()
# Limit the frame rate
clock.tick(60)
با این کد اسکلت بازی اصلی شما قابل بازی است. چپ یا راست را فشار دهید تا شخصیت بازیکن را که با مربع قرمز نشان داده شده است حرکت دهید.
نمایش و به روز رسانی امتیاز بازی
اکنون که یک بازی پایه را تنظیم کرده اید، یک سیستم امتیازدهی اضافه کنید و امتیاز را روی صفحه نمایش دهید.
راه اندازی Pygame برای رندر متن
برای نمایش متن در Pygame ابتدا باید ماژول های لازم را وارد کرده و ماژول فونت را مقداردهی اولیه کنیم. برای این کار از کد زیر در بالای اسکریپت خود استفاده کنید:
import pygame
import sys
import os
pygame.init()
pygame.font.init()
ماژول pygame.font به شما امکان می دهد از قابلیت های رندر متن Pygame استفاده کنید و تابع pygame.init() ماژول فونت را مقداردهی اولیه می کند.
ایجاد یک سیستم امتیازدهی پایه
در مرحله بعد، یک سیستم امتیازدهی اولیه برای بازی خود ایجاد کنید. برای انجام این کار، دو متغیر را اعلام و مقداردهی اولیه کنید: score و score_increment. متغیر امتیاز امتیاز فعلی بازیکن را پیگیری میکند و متغیر score_increment مشخص میکند که هر بار که بازیکن مانعی را لمس میکند، امتیاز چقدر باید افزایش یابد.
کد زیر را به بالای اسکریپت خود در زیر import اضافه کنید:
score = 0
score_increment = 10
در مرحله بعد، با پیشرفت بازی، امتیاز را به روز کنید. در حلقه بازی، می توانید بررسی کنید که آیا شخصیت بازیکن با مانع برخورد می کند یا خیر. اگر چنین هستند، امتیاز را با مقدار مشخص شده در متغیر score_increment افزایش دهید.
حلقه بازی را برای گنجاندن کد زیر به روز کنید:
# Update the game state
if player.colliderect(obstacle):
score += score_increment
این کد بررسی می کند که آیا شخصیت بازیکن با مانع برخورد می کند یا خیر. در صورت وجود، امتیاز را به میزان مشخص شده افزایش می دهد.
نمایش امتیاز روی صفحه با ماژول فونت
اکنون که ما یک سیستم امتیازدهی اولیه را داریم، اجازه دهید امتیاز را با استفاده از ماژول فونت روی صفحه نمایش دهیم.
ابتدا، بیایید شی فونت را با افزودن کد زیر به بالای حلقه بازی تنظیم کنیم:
# Set up the font object
font = pygame.font.Font(None, 36)
این کد یک شی فونت با اندازه 36 پیکسل و بدون خانواده فونت مشخصی ایجاد می کند. می توانید فونت و اندازه فونت را با تعیین یک فایل فونت و اندازه متفاوت در تابع ()Font سفارشی کنید.
بعد، بیایید امتیاز را روی صفحه بکشیم. پس از اینکه وضعیت بازی را به روز کردید و صفحه را پر کردید، کد زیر را به حلقه بازی اضافه کنید:
# Draw the score to the screen
score_text = font.render(f'Score: {score}', True, (255, 255, 255))
screen.blit(score_text, (10, 10))
این کد از متد render() شی فونت برای ایجاد یک سطح متن حاوی امتیاز استفاده می کند و سپس سطح متن را در موقعیت (10، 10) به صفحه نمایش می کشد.
سفارشی کردن ظاهر متن امتیاز
در نهایت، با انتخاب فونت و اندازه فونت و تغییر رنگ متن، ظاهر متن امتیاز را سفارشی کنید.
برای انتخاب فونت و اندازه فونت خاص، فایل فونت و اندازه را به عنوان آرگومان به تابع ()Font ارسال کنید:
font = pygame.font.Font('arial.ttf', 48)
به راحتی می توانید فایل های فونت های مختلف را از اینترنت دانلود کنید. پس از دانلود، فقط فایل فونت را در ریشه دایرکتوری کاری خود قرار دهید.
برای تغییر رنگ متن، یک تاپل رنگی را به عنوان آرگومان سوم به متد render() ارسال کنید:
score_text = font.render(f'Score: {score}', True, (0, 255, 0))
و بس! با این تغییرات، اکنون باید یک سیستم امتیاز بازی کاملاً کاربردی داشته باشید که امتیاز را روی صفحه نمایش می دهد و با پیشرفت بازیکن در بازی، آن را به روز می کند. میتوانید با آزمایش با خانوادههای فونت، اندازهها و رنگهای مختلف ظاهر متن امتیاز را سفارشی کنید.
ردیابی امتیاز در بازی
در زیر کد کامل کار آمده است، همچنین می توانید کد را در این مخزن GitHub پیدا کنید.
import pygame
import os
pygame.init()
pygame.font.init()
score = 0
score_increment = 10
# Set up the window
screen = pygame.display.set_mode((750, 450))
# Set up the game clock
clock = pygame.time.Clock()
# Set up the player character
player = pygame.Rect(100, 200, 50, 50)
# Set up the obstacle
obstacle = pygame.Rect(200, 200, 50, 50)
# Set up the game loop
while True:
font = pygame.font.Font(None, 36)
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.x -= 10
elif event.key == pygame.K_RIGHT:
player.x += 10
# Update the game state
if player.colliderect(obstacle):
score += score_increment
# Draw the game
screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 0, 0), player)
pygame.draw.rect(screen, (0, 255, 0), obstacle)
# Draw the score to the screen
score_text = font.render(f'Score: {score}', True, (255, 255, 255))
screen.blit(score_text, (10, 10))
# Update the display
pygame.display.flip()
# Limit the frame rate
clock.tick(60)
این کد یک پنجره با اندازه 750×450 پیکسل، یک کاراکتر پخش کننده و یک مانع ایجاد می کند. از یک حلقه بازی برای مدیریت رویدادها، به روز رسانی وضعیت و کشیدن بازی به روی صفحه استفاده می کند. همچنین شامل یک سیستم امتیاز دهی است که هر بار که شخصیت بازیکن با مانع برخورد می کند امتیاز را ده امتیاز افزایش می دهد و یک شی فونت و کد رندر متن برای نمایش امتیاز بر روی صفحه نمایش.
در بخش مدیریت رویداد، کد همچنین شامل قابلیت حرکت شخصیت بازیکن به چپ و راست با استفاده از کلیدهای جهت دار است.
حلقه بازی شامل کدهایی برای به روز رسانی نمایشگر و محدود کردن نرخ فریم به 60 فریم در ثانیه است که از اجرای روان بازی اطمینان حاصل می کند.
به طور کلی، این کد یک مثال اساسی از نحوه نمایش و بهروزرسانی امتیازات بازی در Pygame را ارائه میکند و میتواند برای ایجاد بازیهای پیچیدهتر و جذابتر، سفارشیسازی و گسترش یابد.
ایجاد بازی های مختلف با استفاده از Pygame
Pygame یک کتابخانه قدرتمند و آسان برای ساخت بازی در پایتون است. با مجموعه ای غنی از ویژگی ها و قابلیت های آن، می توانید طیف گسترده ای از بازی ها را ایجاد کنید، از جامپرهای ساده و پلتفرمر گرفته تا بازی های پیچیده تر و همه جانبه تر.
چه یک مبتدی یا یک توسعه دهنده بازی با تجربه باشید، Pygame یک انتخاب عالی برای ایجاد بازی های جذاب و سرگرم کننده است.