网站搜索

在 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,您可以创建既有趣又具有互动性的游戏。所以走出去开始创造吧!

相关文章: