在 PyGame 中使用触摸输入
没有输入,游戏就毫无意义,借助 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")创建一个简单的游戏
您可以在此 GitHub Repo 中找到所有代码。
首先创建一个简单的游戏。该游戏将包含一个玩家角色,您可以使用触摸输入在屏幕上移动该角色。为此,您需要创建一个游戏循环和一个玩家角色。
在开始之前,请确保您的设备上安装了 pip,然后使用以下命令安装 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,您可以创建既有趣又具有互动性的游戏。所以走出去开始创造吧!
