Pygame重置游戏

Pygame Reset game

我需要一些帮助来重置我制作的游戏。我有主循环和碰撞检测工作。我正在尝试立即重新启动游戏,它只是重置分数并重新开始 - 我不希望它在再次重新启动游戏之前有任何用户输入。

MoveAsteroids() 只是将玩家必须避开的小行星移过屏幕。也是每躲过一颗小行星分数加1的函数

def game_loop():
    global score
    while not game_over:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    spaceship.change = -5
                elif event.key == pygame.K_DOWN:
                    spaceship.change = 5

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                    spaceship.change = 0

        spaceship.y += spaceship.change
        if spaceship.y > window_height - spaceship.height:     # Creating borders on the window
            spaceship.y = window_height - spaceship.height
        elif spaceship.y < 0:
            spaceship.y = 0

        window.blit(bg_img, (0, 0))
        MoveAsteroids()
        CollisionDetection()
        Score_display("Score: " + str(score * 100), white)


        pygame.display.update()

def CollisionDetection():
    global score
    spaceship_rect = pygame.Rect(spaceship.x, spaceship.y, spaceship.width, spaceship.height)
    for x in range(1, 5):
        rect = pygame.Rect(asteroids[x].x, asteroids[x].y, asteroids[x].width, asteroids[x].height)
        if spaceship_rect.colliderect(rect):
            pass 

# The part I need help with is this line of code just above^. .colliderect() returns true when a collision happens. 

如果我没看错,你只是想重置游戏。就这样

def CollisionDetection():
global score
spaceship_rect = pygame.Rect(spaceship.x, spaceship.y, spaceship.width, spaceship.height)
for x in range(1, 5):
    rect = pygame.Rect(asteroids[x].x, asteroids[x].y, asteroids[x].width, asteroids[x].height)
    if spaceship_rect.colliderect(rect):
        score = 0
        // here you reset your spaceship.x and y to the normal state

你也可以看看 sprites。它使碰撞检测更容易,并且非常适合与它的组一起玩的大型游戏。