有没有一种方法可以遍历一系列图像来查找pygame中单击的图像?

时间:2019-11-20 12:03:01

标签: python arrays image pygame

我目前正在用pygame编写游戏。对于游戏的特定方面,我希望用户能够单击图像并获取信息。我有一个具有图像字段的类对象数组,并且循环遍历此数组,以查看是否单击了其中一个图像以显示对象的信息。问题在于它似乎只对一个图像起作用,并且它是阵列中间的图像。我尝试将用于获取数组项索引的变量更改为恒定值,以查看是否可以获取数组中的第一张图片以显示其信息,但这没有用,相反,中间图片仍对点击。

Run = True
while Run:
    clock.tick(30)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
           Run = False

        if event.type == pygame.MOUSEBUTTONDOWN:
            mX,mY = event.pos
            for l in range(len(Locations)):
                if Locations[l].board.get_rect().collidepoint((mX,mY)):
                    Locations[l].GetInfo()

1 个答案:

答案 0 :(得分:2)

Locations[l].boardpygame.Surface对象。一个Surface没有位置,只有一个大小,因此get_rect()返回一个始终以(0,0)开始的矩形。您必须手动设置矩形的位置。

例如如果该职位存储在Locations[l].xLocations[l].y中,则可以执行以下操作:

mX,mY = event.pos
for l in range(len(Locations)):

    x, y = Locations[l].x, Locations[l].y
    rect = Locations[l].board.get_rect(topleft = (x, y))

    if rect.collidepoint((mX,mY)):
        Locations[l].GetInfo()