我在游戏结束代码中的碰撞在 pygame 中无法正常工作

My collision in my code for game over is not working right in pygame

我正在尝试在 pygame 中制作游戏,我快完成了。我的游戏机制有问题。 在我通过触摸敌人而死后,我的敌人消失了,我死后将他们发送到 Y=2000,现在他们继续移动,然后在几秒钟后出现。我的音乐游戏有效,但我的文字游戏无效。

在我的代码中我有这个游戏结束的代码,因为当敌人碰到我时我想输:

# Game Over
if isCollision(enemyX[i], enemyY[i], playerX, playerY):
    for j in range(num_of_enemies):
        enemyY[j] = 2000
    game_over_text()
    break

这行不通,因为我刚才描述的情况发生了。

我尝试更改代码并使用它:

# Game Over
if enemyY[i] > 440:
    for j in range(num_of_enemies):
        enemyY[j] = 2000
    game_over_text()
    break

这行得通,我得到了游戏结束的文字,游戏结束的声音,我的敌人不会回来了。但这不是我想要的。

有人知道我该如何解决这个问题吗?

这是我的 iscollision 函数代码:

def isCollision(enemyX, enemyY, bulletX, bulletY):
    # Formel for distanse mellom to koordinater
    distance = math.sqrt((math.pow(enemyX-bulletX, 2)) + (math.pow(enemyY-bulletY, 2)))
    if distance < 30:
        return True
    else:
        return False

它检测到碰撞,但碰撞代码阻止了游戏结束文本的工作。

我的整个代码: https://gist.github.com/EkteFrokostNam/a46b8a905ec3d1f190af482887a80341

你只在一帧的文字上绘制游戏。如果要永久显示文字,需要在应用程序循环中绘制:

def game_over_text():
    over_text = over_font.render("GAME OVER", True, (255, 255, 255))
    screen.blit(over_text, (200, 250))
   
def game_over_sound(): 
    pygame.mixer.music.set_volume(0)
    death_music = mixer.Sound('Death.mp3')
    death_music.set_volume(0.1)
    death_music.play()
game_over = False

# Game loop
running = True 
while running:
    # [...]

    # Enemy movement

    for i in range(num_of_enemies):

        # Game Over
        if isCollision(enemyX[i], enemyY[i], playerX, playerY):
            for j in range(num_of_enemies):
                enemyY[j] = 2000
            game_over_sound()
            game_over = True
            break

    # [...]

    if game_over:
        game_over_text()