یک بازی بدون ورودی چیزی نیست، و با پشتیبانی Pygame از هر دو ورودی ماوس و لمسی، می توانید اطمینان حاصل کنید که بازی خود در دسترس است.
در این روزگار، دستگاه های لمسی همه جا هستند. جای تعجب نیست که توسعه دهندگان بازی به طور فزاینده ای از ورودی لمسی در بازی های خود استفاده می کنند و فریم ورک ها این کار را آسان تر و آسان تر می کنند.
PyGame ایجاد بازیها و برنامههایی را که میتوانند از ورودیهای لمسی استفاده کنند، آسان میکند.
پشتیبانی لمسی PyGame
PyGame دارای پشتیبانی داخلی برای کار با ورودی های لمسی است. این شامل پشتیبانی از ورودی های لمسی ماوس و انگشت است.
برای شناسایی ماوس، می توانید از رویدادهای pygame.MOUSEBUTTONDOWN و pygame.MOUSEBUTTONUP استفاده کنید. مثلا:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
print("Mouse button pressed")
برای تشخیص ورودی های لمس انگشت، می توانید از رویدادهای pygame.FINGERDOWN و pygame.FINGERUP استفاده کنید. مثلا:
for event in pygame.event.get():
if event.type == pygame.FINGERDOWN:
print("Finger touched the screen")
ایجاد یک بازی ساده
شما می توانید تمام کدها را در این Repo GitHub پیدا کنید.
با ایجاد یک بازی ساده شروع کنید. این بازی از یک شخصیت بازیکن تشکیل شده است که می توانید با استفاده از ورودی های لمسی روی صفحه حرکت کنید. برای انجام این کار، باید یک حلقه بازی و یک شخصیت بازیکن ایجاد کنید.
قبل از شروع، مطمئن شوید که پیپ را روی دستگاه خود نصب کرده اید، سپس از دستور زیر برای نصب ماژول PyGame استفاده کنید:
pip install pygame
اکنون ماژول PyGame را در کد بازی خود وارد کنید:
import pygame
pygame.init()
پس از آن، پنجره بازی و یک شی بازی ایجاد کنید:
# Set up the display
size = (400, 400)
screen = pygame.display.set_mode(size)
# Create a player object
player = pygame.Surface((50, 50))
player.fill((255, 0, 0))
# Set the initial position of the player
player_pos = [175, 175]
در نهایت حلقه بازی را ایجاد کنید:
# The game loop
running = True
while running:
# Check for events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Update the player position
player_pos[0] += 5
player_pos[1] += 5
# Draw the player
screen.blit(player, player_pos)
# Update the display
pygame.display.update()
توجه داشته باشید که کد بالا فقط یک بازی ساده ایجاد می کند که در آن شخصیت بازیکن در اطراف صفحه حرکت می کند. برای جذابتر کردن بازی، میتوانید فیزیک و برخوردها را اضافه کنید تا موانعی را برای بازیکن ایجاد کنید تا بر آن غلبه کند.
ورودی های لمسی ماوس برای حرکت بازیکن
اکنون که یک بازی با شخصیت بازیکن دارید، می توانید شروع به اضافه کردن ورودی های لمسی کنید. برای انجام این کار، باید یک رویداد کنترل کننده برای ورودی های ماوس اضافه کنید. رویدادهای pygame.MOUSEBUTTONDOWN و pygame.MOUSEBUTTONUP را به حلقه بازی اضافه کنید.
یک کنترل کننده رویداد برای ورودی های ماوس ایجاد کنید. هنگامی که یک بازیکن دکمه ماوس را فشار می دهد، موقعیت شخصیت را به موقعیت فعلی ماوس به روز کنید. برنامه از انتشار دکمه ماوس چشم پوشی می کند، زیرا در این صورت نیازی به انجام هیچ اقدامی نیست.
# The game loop
running = True
while running:
# Check for events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Check for mouse inputs
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = event.pos
player_pos[0] = mouse_x
player_pos[1] = mouse_y
elif event.type == pygame.MOUSEBUTTONUP:
pass
screen.fill((0, 0, 0))
# Draw the player
screen.blit(player, player_pos)
# Update the display
pygame.display.update()
همچنین می توانید منطق اضافی را به کنترل کننده رویداد اضافه کنید تا پخش کننده در پاسخ به ورودی ماوس حرکت کند.
ورودی های لمس انگشت برای حرکت بازیکن
علاوه بر ورودی های ماوس، می توانید ورودی های لمسی انگشت را نیز اضافه کنید. برای انجام این کار، باید یک کنترل کننده رویداد برای ورودی های لمسی انگشت اضافه کنید.
رویدادهای pygame.FINGERDOWN و pygame.FINGERUP را به حلقه بازی اضافه کنید:
# The game loop
running = True
while running:
# Check for events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Check for mouse inputs
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = event.pos
player_pos[0] = mouse_x
player_pos[1] = mouse_y
elif event.type == pygame.MOUSEBUTTONUP:
pass
# Check for finger inputs
elif event.type == pygame.FINGERDOWN:
finger_x, finger_y = event.pos
player_pos[0] = finger_x
player_pos[1] = finger_y
elif event.type == pygame.FINGERUP:
pass
screen.fill((0, 0, 0))
# Draw the player
screen.blit(player, player_pos)
# Update the display
pygame.display.update()
توجه کنید که چقدر شبیه به کنترل کننده رویداد ورودی ماوس است. هنگامی که بازیکن انگشت خود را روی صفحه فشار می دهد، این کنترل کننده رویداد موقعیت شخصیت را به روز می کند. وقتی انگشتشان را رها می کنند هیچ اتفاقی نمی افتد. این به شما این امکان را می دهد که یک بازی بسازید که بتوانید با استفاده از ورودی لمسی ماوس و انگشت آن را کنترل کنید. به خاطر داشته باشید که می توانید از رویدادهای دیگری مانند pygame.FINGERMOTION نیز برای پاسخ دادن به حرکت انگشت استفاده کنید.
ویژگی های لمسی اضافی Pygame
با وجود ویژگی های لمسی اولیه، می توانید شروع به اضافه کردن ویژگی های پیشرفته تر کنید. PyGame دارای چند ویژگی داخلی است که می تواند به شما کمک کند ویژگی های لمسی بیشتری را به بازی خود اضافه کنید.
اولین ویژگی تابع ()pygame.mouse.set_visible است. این عملکرد به شما امکان می دهد مکان نما ماوس را پنهان کنید. اگر میخواهید یک بازی بسازید که فقط از ورودیهای لمسی استفاده میکند و نه از ماوس، میتواند مفید باشد.
در اینجا مثالی از نحوه استفاده از تابع set_visible() آورده شده است:
pygame.mouse.set_visible(False)
تابع pygame.mouse.set_pos() مکان نما ماوس را روی یک موقعیت خاص روی صفحه قرار می دهد. اگر میخواهید ماوس را بدون استفاده از ورودیهای ماوس به مکان خاصی منتقل کنید، این کار مفید است.
در زیر مثالی از نحوه استفاده از تابع set_pos() آورده شده است:
pygame.mouse.set_pos(200, 200)
می توانید از تابع pygame.mouse.get_rel() برای بدست آوردن حرکت نسبی ماوس استفاده کنید. می توانید از این برای تشخیص اینکه ماوس از آخرین رویداد ماوس تا چه حد حرکت کرده است استفاده کنید.
به این صورت می توانید از تابع get_rel() استفاده کنید:
dx, dy = pygame.mouse.get_rel()
در نهایت، میتوانید از تابع pygame.mouse.get_pressed() برای بررسی اینکه آیا بازیکن دکمهای از ماوس را فشار میدهد استفاده کنید. این می تواند هنگام ایجاد بازی با کنترل های ماوس/لمسی مفید باشد.
در زیر مثالی از نحوه استفاده از تابع get_pressed() آورده شده است:
mouse_buttons = pygame.mouse.get_pressed()
PyGame همچنین یک نوع رویداد MOUSEWHEEL را ارائه می دهد که می توانید از آن برای شناسایی اسکرول های چرخ ماوس استفاده کنید. از اسکرول های عمودی و افقی پشتیبانی می کند.
در اینجا یک مثال است:
for event in pygame.event.get():
if event.type == pygame.MOUSEWHEEL:
if event.y > 0:
print("Mouse wheel scrolled up")
elif event.y < 0:
print("Mouse wheel scrolled down")
ایجاد بازی های تعاملی با ورودی های لمسی
با وجود ورودی های لمسی، اکنون می توانید بازی های تعاملی ایجاد کنید. به عنوان مثال، می توانید یک بازی ایجاد کنید که در آن بازیکن بتواند با استفاده از ورودی های لمسی در اطراف صفحه حرکت کند. همچنین میتوانید بازیهای مبتنی بر ژست بسازید، جایی که بازیکن میتواند حرکات مختلفی را برای فعال کردن اقدامات در بازی انجام دهد.
وقتی صحبت از ایجاد بازی با ورودی های لمسی می شود، امکانات بی پایان هستند. با کمک PyGame می توانید بازی هایی بسازید که هم سرگرم کننده و هم تعاملی باشند. پس بیرون بروید و شروع به ایجاد کنید!