美文网首页
【python3小白上路系列】实现记分系统(一)

【python3小白上路系列】实现记分系统(一)

作者: Charles_DT | 来源:发表于2020-09-02 16:18 被阅读0次

    3.3 记分

    下面来实现一个记分系统,以实时地跟踪玩家的得分,并显示最高得分、当前等级和余下的飞船数。 得分是游戏的一项统计信息,因此我们在GameStats 中添加一个score 属性:

    class GameStats():
        # 跟踪游戏的统计信息
        def __init__(self,ai_settings):
            # 初始化统计信息
            self.ai_settings = ai_settings
            self.reset_stats()
            # 游戏刚启动时处于非活动状态
            self.game_active = False
    
        def reset_stats(self):
        # 初始化在游戏运行期间可能变化的统计信息
            self.ships_left = self.ai_settings.ship_limit
            self.score = 0
    

    为在每次开始游戏时都重置得分,我们在reset_stats() 而不是init() 中初始化score 。

    3.3.1 显示得分

    为在屏幕上显示得分,我们首先创建一个新类Scoreboard 。就当前而言,这个类只显示当前得分,但后面我们也将使用它来显示最高得分、等级和余下的飞船数。下面是这个类的前半部分,它被保存为文件scoreboard.py:

    import pygame.font
    
    class Scoreboard():
        # 显示得分信息的类
        def __init__(self,ai_settings,screen,stats):
            # 初始化显示得分涉及的属性
            self.screen = screen
            self.screen.rect = screen.get_rect()
            self.ai_settings = ai_settings
            self.stats = stats
    
            # 显示得分时用的字体设置
            self.text_color = (30,30,30)
            self.font = pygame.font.SysFont(None,48)
    
            # 准备初始得分图像
            self.prep_score()
    

    为将要显示的文本转换为图像,我们调用了prep_score(),其定义如下:

    def prep_score(self):
            # 将得分转换为一幅渲染的图像
            score_str = str(self.stats.score)
            self.score_image = self.font.render(score_str,True,self.text_color,self.ai_settings.bg_color)
    
            # 将得分放在屏幕右上角
            self.score_rect = self.score_image.get_rect()
            self.score_rect.right = self.screen_rect.right - 20
            self.score_rect.top = 20
    

    在prep_score() 中,我们首先将数字值stats.score 转换为字符串,再将这个字符串传递给创建图像的render()。为在屏幕上清晰地显示得分,我们 向render() 传递了屏幕背景色,以及文本颜色。

    我们将得分放在屏幕右上角,并在得分增大导致这个数字更宽时让它向左延伸。为确保得分始终锚定在屏幕右边,我们创建了一个名为score_rect 的rect,让其右边缘与屏幕右边缘相距20像素,并让其上边缘与屏幕上边缘也相距20像素。

    最后,我们创建方法show_score() ,用于显示渲染好的得分图像:

    def show_score(self):
            # 在屏幕上提示得分
            self.screen.blit(self.score_image,self.score_rect)
    

    这个方法将得分图像显示到屏幕上,并将其放在score_rect 指定的位置。

    相关文章

      网友评论

          本文标题:【python3小白上路系列】实现记分系统(一)

          本文链接:https://www.haomeiwen.com/subject/wtwisktx.html