在带有碰撞的pygame中创建得分函数

2024-07-05 10:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

当两个精灵在我的游戏中碰撞(玩家和'关键'),我希望得分变量增加100分。我试过很多方法,但它们都是一样的;当精灵与键接触时,变量不断增加。我需要每次碰撞增加一次。这只是我尝试过的方法之一:

def key_collect():
    global key_score
    global score_rect
    k_rect = pygame.draw.rect(SURF, (0,0,0), (k_spritex, k_spritey, 30, 40), 1)
    p_score_rect = pygame.draw.rect(SURF, (0,0,0), (p_spritex, p_spritey, 30, 40), 1)
    if p_score_rect.colliderect(k_rect):
        if score_rect == True:
            key_score = key_score + 100
            return key_score
            score_rect = False
            return score_rect

我试着使得分增加100,如果可变分数为真,然后使其为假,这意味着它不能再增加。我要做的是,当精灵不发生碰撞时,变量会再次变为真,这样这个过程就会重复。然而,当精灵保持联系时,它又一次持续地增加。我很感激你的帮助。在


Tags: 方法keyrect游戏returnif玩家global
2条回答

代码的问题是函数在return key_score行退出,并跳过之后的两行。关键字return总是在第一次遇到时终止函数。在

您只需稍微更改代码:

def key_collect():
    global key_score
    global score_rect
    k_rect = pygame.draw.rect(SURF, (0,0,0), (k_spritex, k_spritey, 30, 40), 1)
    p_score_rect = pygame.draw.rect(SURF, (0,0,0), (p_spritex, p_spritey, 30, 40), 1)
    if p_score_rect.colliderect(k_rect):
        if score_rect == True:
            key_score = key_score + 100
            score_rect = False
            return key_score, score_rect
    else:
        score_rect = True
        return key_score, score_rect

这里假设您希望返回key_score和{}变量。既然它们都是全球性的,那就不需要了。在

试试看:

def key_collect():
    global key_score
    k_rect = pygame.draw.rect(SURF, (0,0,0), (k_spritex, k_spritey, 30, 40), 1)
    p_score_rect = pygame.draw.rect(SURF, (0,0,0), (p_spritex, p_spritey, 30, 40), 1)
    if p_score_rect.colliderect(k_rect):
        if can_increase == True:
            key_score = key_score + 100
            can_increase = False
            return key_score
    else:
         can_increase = True

相关问题 更多 >