PyGame giúp tạo các trò chơi và ứng dụng có thể tận dụng đầu vào cảm ứng một cách dễ dàng.
Hỗ trợ cảm ứng của PyGame
PyGame có hỗ trợ tích hợp để làm việc với đầu vào cảm ứng, bao gồm hỗ trợ cho đầu vào cảm ứng chuột và ngón tay.
Để phát hiện chuột, bạn có thể sử dụng các sự kiện pygame.MOUSEBUTTONDOWN và pygame.MOUSEBUTTONUP. Ví dụ:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
print("Mouse button pressed")
Để phát hiện đầu vào chạm bằng ngón tay, bạn có thể sử dụng các sự kiện pygame.FINGERDOWN và pygame.FINGERUP. Ví dụ:
for event in pygame.event.get():
if event.type == pygame.FINGERDOWN:
print("Finger touched the screen")
Tạo một game đơn giản
Bạn có thể tìm thấy tất cả code trong GitHub Repo này .
Bắt đầu bằng cách tạo một game đơn giản. Trò chơi này sẽ bao gồm một nhân vật người chơi (player) mà bạn có thể di chuyển xung quanh màn hình bằng cách sử dụng đầu vào cảm ứng. Để làm điều này, bạn sẽ cần tạo một vòng lặp trò chơi và một nhân vật player.
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt pip trên thiết bị của mình, sau đó sử dụng lệnh sau để cài đặt mô-đun PyGame:
pip install pygame
Bây giờ, hãy nhập mô-đun PyGame vào code game của bạn:
import pygame
pygame.init()
Sau đó, tạo cửa sổ game và một đối tượng game:
# 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]
Cuối cùng, tạo vòng lặp trò chơi:
# 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()
Đầu vào cảm ứng chuột cho chuyển động của người chơi
Bây giờ bạn bạn có thể bắt đầu thêm đầu vào cảm ứng. Để làm điều này, bạn sẽ cần thêm một trình xử lý sự kiện (event handler) cho các đầu vào chuột. Thêm các sự kiện pygame.MOUSEBUTTONDOWN và pygame.MOUSEBUTTONUP vào vòng lặp trò chơi.
Tạo event handler cho đầu vào chuột. Khi người chơi nhấn nút chuột, cập nhật vị trí của nhân vật thành vị trí chuột hiện tại. Chương trình sẽ bỏ qua việc nhả nút chuột vì nó không cần thực hiện bất kỳ hành động nào trong trường hợp đó.
# 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()
Bạn cũng có thể thêm logic bổ sung vào event handler để làm cho player di chuyển theo phản ứng với đầu vào của chuột.
Đầu vào cảm ứng ngón tay cho chuyển động của người chơi
Ngoài đầu vào chuột, bạn cũng có thể thêm đầu vào cảm ứng ngón tay. Để thực hiện việc này, bạn sẽ cần thêm event handler cho các đầu vào chạm bằng ngón tay.
Thêm các sự kiện pygame.FINGERDOWN và pygame.FINGERUP vào vòng lặp trò chơi:
# 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()
Bạn sẽ thấy nó cũng tương tự như event handler cho đầu vào chuột. Event handler này cập nhật vị trí của nhân vật khi người chơi nhấn ngón tay trên màn hình. Khi ngón tay rời màn hình, không có gì xảy ra. Điều này cho phép bạn tạo một game mà bạn có thể điều khiển bằng cách sử dụng cả đầu vào bằng chuột và chạm ngón tay. Hãy nhớ rằng bạn cũng có thể sử dụng các sự kiện khác chẳng hạn như pygame.FINGERMOTION để phản hồi với chuyển động của ngón tay.
Các tính năng cảm ứng bổ sung của Pygame
Với các tính năng cảm ứng cơ bản đã có, bạn có thể bắt đầu thêm các tính năng nâng cao hơn. PyGame có một vài tính năng tích hợp có thể giúp bạn thêm nhiều tính năng cảm ứng hơn vào game của mình.
Tính năng đầu tiên là hàm pygame.mouse.set_visible() cho phép bạn ẩn con trỏ chuột. Điều này có thể hữu ích nếu bạn muốn tạo game chỉ sử dụng đầu vào cảm ứng chứ không phải chuột.
Đây là một ví dụ về cách sử dụng hàm set_visible():
pygame.mouse.set_visible(False)
Hàm pygame.mouse.set_pos() đặt con trỏ chuột tới một vị trí cụ thể trên màn hình. Điều này hữu ích nếu bạn muốn di chuyển chuột đến một vị trí cụ thể mà không cần sử dụng đầu vào của chuột.
Dưới đây là một ví dụ về cách sử dụng hàm set_pos():
pygame.mouse.set_pos(200, 200)
Bạn có thể sử dụng hàm pygame.mouse.get_rel() để lấy chuyển động tương đối của chuột. Điều này để phát hiện xem con chuột đã di chuyển bao xa kể từ sự kiện chuột cuối cùng.
Đây là cách bạn có thể sử dụng hàm get_rel():
dx, dy = pygame.mouse.get_rel()
Cuối cùng, bạn có thể sử dụng hàm pygame.mouse.get_pressed( ) để kiểm tra xem người chơi có nhấn nút chuột nào không. Điều này có thể hữu ích khi tạo game bằng điều khiển chuột/cảm ứng.
Dưới đây là một ví dụ về cách sử dụng hàm get_press() :
mouse_buttons = pygame.mouse.get_pressed()
Tạo game hấp dẫn với đầu vào cảm ứng
Với đầu vào cảm ứng tại chỗ, giờ đây bạn có thể tạo các gametương tác. Ví dụ: bạn có thể tạo game trong đó người chơi có thể di chuyển xung quanh màn hình bằng cách sử dụng đầu vào cảm ứng. Bạn cũng có thể tạo các game dựa trên cử chỉ, trong đó người chơi có thể thực hiện các cử chỉ khác nhau để kích hoạt các hành động trong trò chơi. Khả năng là vô tận. Với sự trợ giúp của PyGame, bạn có thể tạo các trò chơi vừa thú vị vừa có tính tương tác.
Tìm hiểu các khóa học lập trình của FUNiX tại đây:
Vân Nguyễn
Dịch từ: https://www.makeuseof.com/pygame-touch-inputs-working-with/
Bình luận (0
)