游戏结束

现在,当玩家的生命耗尽时,程序就会突然结束。 这太不友好了,所以我们将设置一个“游戏结束”界面,并允许玩家根据需要重玩游戏。

游戏结束的原因是我们的游戏循环由运行标志控制(标志是一个变量,可以是 True 或 False),当玩家死亡时我们将 running 设置为 False。 相反,我们想要跟踪我们的游戏处于什么状态(显示游戏结束或正在玩),我们将创建一个名为 game_over 的标志,并将其添加到游戏循环的顶部:

# Game loop
game_over = True
running = True
while running:
    if game_over:
        show_go_screen()

我们稍后会定义 show_go_screen(),我们还需要考虑其他因素。 当游戏结束,我们进入游戏结束画面,如果玩家选择再次玩,我们需要重置所有东西——分数、Mob、玩家的生命等等。当前,我们是在游戏循环之前设置这些内容,现在我们要将它们移动到 show_go_screen() 之后,这样当玩家退出该屏幕时它们就会执行:

# Game loop
game_over = True
running = True
while running:
    if game_over:
        show_go_screen()
        game_over = False
        all_sprites = pygame.sprite.Group()
        mobs = pygame.sprite.Group()
        bullets = pygame.sprite.Group()
        powerups = pygame.sprite.Group()
        player = Player()
        all_sprites.add(player)
        for i in range(8):
            newmob()
        score = 0

我们还将 game_over 设置为 False,因为我们正在开始一个新游戏。 然后,我们可以改变玩家生命耗尽时发生的情况:

# if the player died and the explosion has finished playing
if player.lives == 0 and not death_explosion.alive():
    game_over = True

游戏结束画面

现在我们只需要定义 show_go_screen 做什么。 因为对于这个例子,我们只做一个“屏幕”,我们只是要使用游戏的标题,并给出一些关于如何玩指导说明:

def show_go_screen():
    screen.blit(background, background_rect)
    draw_text(screen, "SHMUP!", 64, WIDTH / 2, HEIGHT / 4)
    draw_text(screen, "Arrow keys move, Space to fire", 22,
              WIDTH / 2, HEIGHT / 2)
    draw_text(screen, "Press a key to begin", 18, WIDTH / 2, HEIGHT * 3 / 4)
    pygame.display.flip()
    waiting = True
    while waiting:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
            if event.type == pygame.KEYUP:
                waiting = False

最后的 while 循环是我们处理“按一个键开始”部分的方式。 这有点像一个微型游戏循环,但我们所做的只是检查事件。 我们关心的唯一事件是 pygame.QUIT,它在单击窗口上的 X 时发生,以及按键事件。 你注意到我们没有在那里使用'pygame.KEYDOWN'吗?

使用 KEYUP 的原因是我们不会在玩家仍然按住键时开始游戏。 他们必须点击并释放才能继续。

这是在屏幕上进行游戏的一种非常简单的方法。 还有许多其他方法可以处理它,但我们将在后面的教程中讨论这些方法。

将所有内容封装起来

我们有了它,你的第一个完整的 Pygame 游戏! 如果您通过所有这些步骤都坚持下去,那么您就可以成为一名游戏程序员了。

显然我们可以添加更多的东西,比如:

  • 增加难度
  • 更多通电
  • 添加敌人(以及敌人的反击!)
  • 高分系统
  • boss等级 您可能还可以考虑其他想法。在以后的课程中,我们将介绍其他技术,然后您可以再倒回来应用到这个游戏中。 完整的代码请点击此处访问

题图来自unsplash

文章分享二维码

微信扫码分享这篇文章

扫描二维码即可在手机中继续阅读,也方便转发给老师、家长或同学。

上一篇 解读新课纲中的信息科技课程 下一篇 少儿编程之使用PyGame编写游戏(15):太空大撞击 增加能量道具 (续)