Python 如何检测单击矩形对象、图像或精灵的时间

Python 如何检测单击矩形对象、图像或精灵的时间,python,pygame,collision-detection,Python,Pygame,Collision Detection,我试图告诉你什么时候点击了一个精灵,它必须是某个特定组(pygame.sprite.group())的一部分。目前,我尝试创建一个精灵,它只是鼠标位置,完全不可见,将其添加到自己的组中,并使用以下代码: clickedList=pygame.sprite.spritecollide(猜测1,鼠标,错误) 其中,guess1是点击的精灵,mices是包含具有鼠标位置的精灵的组 当我尝试这个方法时,我被告知“组没有属性rect”。从这里我该怎么办?如果你有一个精灵(我的精灵),你想验证鼠标是否在精灵

我试图告诉你什么时候点击了一个精灵,它必须是某个特定组(
pygame.sprite.group()
)的一部分。目前,我尝试创建一个精灵,它只是鼠标位置,完全不可见,将其添加到自己的组中,并使用以下代码:

clickedList=pygame.sprite.spritecollide(猜测1,鼠标,错误)

其中,
guess1
是点击的精灵,
mices
是包含具有鼠标位置的精灵的组

当我尝试这个方法时,我被告知“组没有属性rect”。从这里我该怎么办?

如果你有一个精灵(
我的精灵
),你想验证鼠标是否在精灵上,那么你必须获得对象的
.rect
属性,并通过
.collidatepoint()
测试鼠标是否在矩形区域内:

mouse\u pos=pygame.mouse.get\u pos()
如果我的sprite.rect.collide点(鼠标位置):
# [...]
a中的精灵可以遍历。因此,可以在循环中进行测试:

mouse\u pos=pygame.mouse.get\u pos()
对于老鼠中的雪碧:
如果sprite.rect.collidepoint(鼠标位置):
# [...]
或者获取组中鼠标所在位置的精灵列表。如果精灵不重叠,则列表将包含0或1个元素:

mouse\u pos=pygame.mouse.get\u pos()
单击\u列表=[sprite for sprite in mouse if sprite.rect.collidepoint(鼠标位置)]
如果有(单击列表):
单击的精灵=单击的精灵列表[0]
# [...]

您是否100%确定
guess1
Sprite
实例?看起来不是这样的。这回答了你的问题吗@sloth这是一个
pygame.sprite.Group()
我需要使用精灵本身吗?@Valentino不,答案中链接的例子已经不存在了,我不太明白它的其余部分在说什么,因为这几乎就是我正在做的,至少就我所知。我正在使用第二个,但它总是返回为false
mousePos=pygame.mouse.get_pos()用于猜圆1:if Circle.rect.collidepoint(mousePos):###…
是否可能是精灵本身而不是条件的问题,或者我只是错过了一些愚蠢的东西?(对代码表示抱歉,它在注释中的格式不正确。)我正在使用它来定义类
类圆(pygame.sprite.sprite):def uu init_u(self,value,x,y):pygame.sprite.sprite.u init_u(self)self.value=value circleImage=pygame.image.load(“Outline.png”)如果值==11:circleImage=pygame.image.load(“Unknown.png”)self.image=pygame.Surface([40,40])self.image.set_colorkey(白色)self.image.blit(circleImage,(0,0))self.rect=self.image.get_rect()self.rect.x=x self.rect.y=y
并使用
display.flip
绘图如果更简单的话,我已经在google文档中找到了所有的代码是的,它是一个组。@Nico但它似乎工作得很好
猜1
是第二行的4个圆圈。如果要更改圆的颜色,则必须在
changeColour