📜  如何检查鼠标是否在pygame中的矩形上 - Python(1)

📅  最后修改于: 2023-12-03 15:38:50.846000             🧑  作者: Mango

如何检查鼠标是否在pygame中的矩形上 - Python

在 Pygame 中处理鼠标事件时,经常需要检查鼠标是否在矩形范围内。这里提供几种方法供参考。

方法一:使用 Rect 对象

Pygame 提供了一个 Rect 对象,可以方便地处理矩形。我们可以使用 Rect 的 collidepoint 方法来检查鼠标是否在矩形范围内。

import pygame

# 初始化 Pygame
pygame.init()

# 创建一个 500 x 500 的窗口
screen = pygame.display.set_mode((500, 500))

# 创建一个矩形
rect = pygame.Rect(100, 100, 200, 200)

# 游戏循环
while True:
    # 处理事件
    for event in pygame.event.get():
        # 退出游戏
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        # 鼠标移动事件
        if event.type == pygame.MOUSEMOTION:
            # 检查鼠标是否在矩形范围内
            if rect.collidepoint(event.pos):
                print('Mouse is in the rectangle')
            else:
                print('Mouse is not in the rectangle')

    # 绘制矩形
    pygame.draw.rect(screen, (255, 0, 0), rect)

    # 更新屏幕
    pygame.display.update()
方法二:使用矩形左上角的坐标和宽高

除了使用 Rect 对象,我们还可以直接使用矩形左上角的坐标和宽高来检查鼠标是否在矩形范围内。

import pygame

# 初始化 Pygame
pygame.init()

# 创建一个 500 x 500 的窗口
screen = pygame.display.set_mode((500, 500))

# 创建一个矩形
rect = (100, 100, 200, 200)

# 游戏循环
while True:
    # 处理事件
    for event in pygame.event.get():
        # 退出游戏
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        # 鼠标移动事件
        if event.type == pygame.MOUSEMOTION:
            # 检查鼠标是否在矩形范围内
            if rect[0] <= event.pos[0] <= rect[0] + rect[2] and \
               rect[1] <= event.pos[1] <= rect[1] + rect[3]:
                print('Mouse is in the rectangle')
            else:
                print('Mouse is not in the rectangle')

    # 绘制矩形
    pygame.draw.rect(screen, (255, 0, 0), rect)

    # 更新屏幕
    pygame.display.update()

以上两种方法都可以有效地检查鼠标是否在矩形范围内,选择哪一种方法,可以根据实际情况而定。