Python Pygame在敌人碰撞时更新分数
这条线使两个相撞的敌人消失。然而,由于某些原因,最后的功能总是打开的,我希望只有当敌人每次在这条线上碰撞时,它才会打开Python Pygame在敌人碰撞时更新分数,python,python-2.7,class,pygame,Python,Python 2.7,Class,Pygame,这条线使两个相撞的敌人消失。然而,由于某些原因,最后的功能总是打开的,我希望只有当敌人每次在这条线上碰撞时,它才会打开 pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True,Score_Change()) def Score_Change(): global Score Score += 1 print(Score) #For testing purposes 执行时,将调用Score\u Change
pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True,Score_Change())
def Score_Change():
global Score
Score += 1
print(Score) #For testing purposes
执行时,将调用Score\u Change()
,将执行此函数中的代码,其返回值(None
)将作为collide
参数传递给groupcollide
函数
请注意,最后一个参数需要一个计算两个精灵是否碰撞的函数。从文件中:
collized
参数是一个回调函数,用于计算两个精灵是否发生碰撞。它应该将两个精灵作为值,并返回一个布尔值,指示它们是否发生碰撞。如果未传递碰撞,则所有精灵必须具有“rect”值,该值是精灵区域的矩形,将用于计算碰撞
通常将类似于pygame.sprite.collide\u mask
或pygame.sprite.collide\u circle
的函数作为此参数传递
因此,如果发生碰撞,您似乎希望调用Score\u Change
。事实并非如此。你能做的是:
pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True,Score_Change())
每次这一行
pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True,Score_Change())
def Score_Change():
global Score
Score += 1
print(Score) #For testing purposes
执行时,将调用Score\u Change()
,将执行此函数中的代码,其返回值(None
)将作为collide
参数传递给groupcollide
函数
请注意,最后一个参数需要一个计算两个精灵是否碰撞的函数。从文件中:
collized
参数是一个回调函数,用于计算两个精灵是否发生碰撞。它应该将两个精灵作为值,并返回一个布尔值,指示它们是否发生碰撞。如果未传递碰撞,则所有精灵必须具有“rect”值,该值是精灵区域的矩形,将用于计算碰撞
通常将类似于pygame.sprite.collide\u mask
或pygame.sprite.collide\u circle
的函数作为此参数传递
因此,如果发生碰撞,您似乎希望调用Score\u Change
。事实并非如此。你能做的是:
pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True,Score_Change())
从:
groupcollide(group1,group2,dokill1,dokill2,collide=None)->Sprite\u dict
碰撞参数是一个回调函数,用于计算两个
精灵在碰撞。它应该将两个精灵作为值并返回
一个布尔值,指示它们是否发生碰撞。如果没有发生碰撞
如果已传递,则所有精灵必须有一个“rect”值,即
精灵区域的矩形,将用于计算
碰撞
正在调用您正在传递的函数Score\u Change
,以检查两个单元是否碰撞
groupcollide
返回已碰撞元素的字典。这可以帮助您通过检查有多少敌人发生碰撞来计算分数:
for k, v in pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True):
# k is the enemy
# v is a list of bullets that them
global Score
Score += 1
print(Score)
PS:此功能不处理从以下位置移除碰撞的两个敌人:
groupcollide(group1,group2,dokill1,dokill2,collide=None)->Sprite\u dict
碰撞参数是一个回调函数,用于计算两个
精灵在碰撞。它应该将两个精灵作为值并返回
一个布尔值,指示它们是否发生碰撞。如果没有发生碰撞
如果已传递,则所有精灵必须有一个“rect”值,即
精灵区域的矩形,将用于计算
碰撞
正在调用您正在传递的函数Score\u Change
,以检查两个单元是否碰撞
groupcollide
返回已碰撞元素的字典。这可以帮助您通过检查有多少敌人发生碰撞来计算分数:
for k, v in pygame.sprite.groupcollide(Enemy_List,Bullet_List,True,True):
# k is the enemy
# v is a list of bullets that them
global Score
Score += 1
print(Score)
PS:此功能不处理移除两个碰撞的敌人