Fight Aliens 显示飞船生命/分数/游戏结束

游戏的基本功能搞定,现在来实现一下我们比较关注的游戏中的生命值、武力值等等信息吧

1. 飞船生命值显示

复制代码
# 显示飞船的生命
def show_ship_life(screen, gc):
    """
        显示飞船的生命
    :param screen:  屏幕对象
    :param gc: GameConfig 配置对象
    :return:
    """
    for i in range(gc.ship_life):
        ship = Ship(screen, gc)
        ship.rect.x = ship.rect.width * i
        ship.rect.y = 0
        ship.blit_ship()
复制代码

2. 击中外星人获得分数/关卡升级显示

复制代码
# 显示攻击得到分数 关卡
def show_total_score(screen, gc):
    """
        显示攻击得到分数
    :param screen: 屏幕对象
    :param gc: GameConfig 配置对象
    :return:
    """
    # 创建字体的对象
    font_obj = pygame.font.SysFont(None, 30)
    font_level_obj = pygame.font.SysFont(None, 50)
    # pygame.font.get_fonts() --> 获取系统中的字体名字
    # 使用字体对象,创建字体的图层
    font_sur = font_obj.render(str(gc.total_core) + ' $', True, (0, 0, 0))
    font_level_sur = font_level_obj.render("pass " + str(gc.total_level), True, (0, 0, 0))
    # 获取字体的矩形
    font_rect = font_sur.get_rect()
    font_level_rect = font_sur.get_rect()
    # 调整分数矩形在屏幕中的位置 -- 右上角
    font_rect.x = 730
    font_level_rect.x = 530
    font_rect.y = gc.height / 20
    font_level_rect.y = 0
    # 将字体显示在屏幕中
    screen.blit(font_sur, font_rect)
    screen.blit(font_level_sur, font_level_rect)
复制代码

3. 游戏结束显示

复制代码
# 检查游戏是否结束
def check_game_over(screen, gc):
    """
        检查游戏是否结束
    :param screen: 屏幕对象
    :param gc: GameConfig 配置对象
    :return:
    """
    if gc.ship_life < 0:
        # pygame.font.SysFont(name, size, bold=False, italic=False, constructor=None) -> Font
        # font.render(text, antialias, color, background=None) -> Surface
        # 创建字体的对象
        font_obj = pygame.font.SysFont(None, 100)

        # 使用字体对象,创建字体的图层
        font_sur = font_obj.render('GAME OVER', True, (255, 0, 0), (230, 230, 230))

        # 获取字体的矩形
        font_rect = font_sur.get_rect()
        # 调整字体矩形在屏幕中的位置 -- 居中
        font_rect.centerx = screen.get_rect().centerx
        font_rect.centery = screen.get_rect().centery

        # 将字体显示在屏幕中
        screen.blit(font_sur, font_rect)

        # 刷新屏幕
        pygame.display.flip()

        # 游戏结束时停止 显示4秒
        time.sleep(4)
        # 程序退出
        sys.exit()
复制代码

至此项目结束【比较简洁,用户数据不做保存,后期会出1.2版本】,源码地址:链接: https://pan.baidu.com/s/1le7Xu0OlcpzPQjTW4Qa0Eg 提取码: i4v8

posted @   以赛亚  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示