我目前正在用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()
答案 0 :(得分:2)
Locations[l].board
是pygame.Surface
对象。一个Surface没有位置,只有一个大小,因此get_rect()
返回一个始终以(0,0)开始的矩形。您必须手动设置矩形的位置。
例如如果该职位存储在Locations[l].x
,Locations[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()