如何测试列表是否与点冲突?
How do I test if list collides with point?
我想测试点“rect.midbottom”和列表“list”是否在 PyGame 中发生碰撞。这是我现在使用的代码:
if pygame.Rect.collidelist(rect.midbottom, list) != -1:
#yadda_yadda_yadda
终端显示的内容:
TypeError: descriptor 'collidelist' for 'pygame.Rect' objects doesn't apply to a 'tuple' object
我该怎么做才能解决这个问题?
编辑:我指的矩形不存在于列表中,而是作为它自己的对象。
改为使用 collidelistall 函数。它 return 是所有路口的列表。
index = rect.collidelistall(list)
if len(index) > 0:
#yadda_yadda_yadda
编辑(响应 OP 编辑):因为您的矩形是一个对象,所以此代码将 return 一个空列表。相反,您应该使用
index = rect.collidelist(list)
如果发生碰撞,这将 return 列表中矩形碰撞的第一个元素的索引。如果没有发生碰撞,returns -1.
我不熟悉 pygame,但据我所知,您应该使用 Rect
实例中的 collidelist
,而不是将实例作为从 class Rect
到方法的参数。另外,您不应该使用“list”作为变量名。
if rect.collidelist(list) != -1:
#yadda_yadda_yadda
如果你只想检查一个点,你可以创建一个所有角都在 rect.midbottom
的矩形,或者你可以这样做
if any(rect_from_list.collidepoint(rect.midbottom) for rect_fram_list in list):
#yadda_yadda_yadda
我想测试点“rect.midbottom”和列表“list”是否在 PyGame 中发生碰撞。这是我现在使用的代码:
if pygame.Rect.collidelist(rect.midbottom, list) != -1:
#yadda_yadda_yadda
终端显示的内容:
TypeError: descriptor 'collidelist' for 'pygame.Rect' objects doesn't apply to a 'tuple' object
我该怎么做才能解决这个问题?
编辑:我指的矩形不存在于列表中,而是作为它自己的对象。
改为使用 collidelistall 函数。它 return 是所有路口的列表。
index = rect.collidelistall(list)
if len(index) > 0:
#yadda_yadda_yadda
编辑(响应 OP 编辑):因为您的矩形是一个对象,所以此代码将 return 一个空列表。相反,您应该使用
index = rect.collidelist(list)
如果发生碰撞,这将 return 列表中矩形碰撞的第一个元素的索引。如果没有发生碰撞,returns -1.
我不熟悉 pygame,但据我所知,您应该使用 Rect
实例中的 collidelist
,而不是将实例作为从 class Rect
到方法的参数。另外,您不应该使用“list”作为变量名。
if rect.collidelist(list) != -1:
#yadda_yadda_yadda
如果你只想检查一个点,你可以创建一个所有角都在 rect.midbottom
的矩形,或者你可以这样做
if any(rect_from_list.collidepoint(rect.midbottom) for rect_fram_list in list):
#yadda_yadda_yadda