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:此功能不处理移除两个碰撞的敌人