如何点击 pygame window 中的特定位置?
How can I click on specific positions in a pygame window?
例如我有一个宽度为 100 (int) 的正方形。我想在点击其中时打印一些内容。
import pygame
pygame.init()
window = pygame.display.set_mode((200, 300))
button = pygame.image.load("button.png")
window.blit(button, (50, 50))
pygame.display.flip()
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if (50, 50) <= pos <= (150, 150):
print("text...")
pygame.display.update()
每当我在受限的 x 轴之间单击时,它确实会打印一些内容,但是如果我单击该 x 轴之间的任何 y 坐标,它也会显示输入,例如,如果我单击 (100, 100),它会工作很好,但它也可以通过单击 (100, 200) 来工作,即使我不希望它这样做。我不知道我的问题是否与任何元组有关,但根据我的理解,它只读取 x 轴限制,这就是问题所在。
如果您使用 pygame,您可以将矩形创建为
rect = pygame.Rect(x, y, w, h)
然后,当您按下鼠标时,使用以下方法检查它是否发生碰撞:
if rect.collidepoint(mouse_x, mouse_y):
print("text...")
rect.collidepoint
returns 如果点在矩形内则为真
更改此部分:
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if (50, 50) <= pos <= (150, 150):
print("text...")
收件人:
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if 50 <= pos[0] <= 150 and 50 <= pos[1] <= 150:
print("text...")
或者你也可以改成:
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if all(50<=c<=150 for c in pos):
print("text...")
例如我有一个宽度为 100 (int) 的正方形。我想在点击其中时打印一些内容。
import pygame
pygame.init()
window = pygame.display.set_mode((200, 300))
button = pygame.image.load("button.png")
window.blit(button, (50, 50))
pygame.display.flip()
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if (50, 50) <= pos <= (150, 150):
print("text...")
pygame.display.update()
每当我在受限的 x 轴之间单击时,它确实会打印一些内容,但是如果我单击该 x 轴之间的任何 y 坐标,它也会显示输入,例如,如果我单击 (100, 100),它会工作很好,但它也可以通过单击 (100, 200) 来工作,即使我不希望它这样做。我不知道我的问题是否与任何元组有关,但根据我的理解,它只读取 x 轴限制,这就是问题所在。
如果您使用 pygame,您可以将矩形创建为
rect = pygame.Rect(x, y, w, h)
然后,当您按下鼠标时,使用以下方法检查它是否发生碰撞:
if rect.collidepoint(mouse_x, mouse_y):
print("text...")
rect.collidepoint
returns 如果点在矩形内则为真
更改此部分:
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if (50, 50) <= pos <= (150, 150):
print("text...")
收件人:
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if 50 <= pos[0] <= 150 and 50 <= pos[1] <= 150:
print("text...")
或者你也可以改成:
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if all(50<=c<=150 for c in pos):
print("text...")