Python编程:从入门到实践
章节

第 14 章 记分

游戏从能玩走向有反馈,状态展示和用户感受开始成形

这一章引入分数、等级、生命值等反馈结构,让游戏具备更完整的闭环。

章节主张

一旦程序需要对用户持续反馈状态,界面展示和数据更新的同步就变成关键工程问题。

中文释读

初学者常把记分看成一个小功能,但它其实非常典型:状态一旦需要被显示、刷新、重置和累计,程序就不再只是内部运行,还要关心用户看到什么。记分牌、等级推进、生命重置,这些动作背后都是状态管理。作者通过一个小游戏,实际上让你提前接触了所有交互系统都会遇到的问题。

本章知识路线

  1. 反馈不是装饰,而是用户理解系统状态的窗口
  2. 显示层和逻辑层不同步,是交互程序最常见的隐性错误

关键论点

  • 用户界面反馈会显著提升程序完整度。
  • 状态重置和状态累计是不同类型的问题。
  • 显示层与逻辑层的同步是交互程序常见难点。

行动清单

  • 把用于显示的状态与用于计算的状态都理清楚。
  • 测试新局开始、升级和失败时的状态重置。
  • 别把界面输出和逻辑更新写成一团。

源章节深读

第 14 章 记分 本章将结束游戏《外星⼈⼊侵》的开发。我们会添加⼀个 Play 按钮, ⽤于根据需要启动游戏以及在游戏结束后重启游戏,还会修改这个游 戏,使其随玩家等级的提⾼⽽加快节奏,并实现⼀个记分系统。阅读 本章后,你将掌握⾜够多的知识,能够开始编写随玩家等级的提⾼⽽ 逐渐加⼤难度且显⽰得分的游戏了。 14.1 添加 Play 按钮 本节将添加⼀个 Play 按钮,它在游戏开始前出现,并在游戏结束后再次出 现,让玩家能够开始新游戏。 当前,这个游戏在玩家运⾏ alien_invasion.py 时就开始了。下⾯让游戏在⼀ 开始处于⾮活动状态,并提⽰玩家单击 Play 按钮来开始游戏。为此,像下 ⾯这样修改 AlienInvasion 类的 __init__() ⽅法: alien_invasion.py def __init__(self): """ 初始化统计信息 """ pygame.init() --snip-- # 让游戏在⼀开始处于⾮活动状态 self.game_active = False 现在,游戏在⼀开始处于⾮活动状态,等玩家单击我们创建的 Play 按钮 后,才能开始游戏。

14.1 添加 Play 按钮

14.1 添加 Play 按钮 本节将添加⼀个 Play 按钮,它在游戏开始前出现,并在游戏结束后再次出 现,让玩家能够开始新游戏。 当前,这个游戏在玩家运⾏ alien_invasion.py 时就开始了。下⾯让游戏在⼀ 开始处于⾮活动状态,并提⽰玩家单击 Play 按钮来开始游戏。

这节解决什么:这一节主要解决《第 14 章 记分》里一个更具体的子问题:14.1 添加 Play 按钮 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

14.2 提高难度

14.2 提⾼难度 当前,整个外星舰队被全部击落后,玩家将提⾼⼀个等级,但游戏的难度 不变。下⾯来增加⼀点⼉趣味性:每当玩家将屏幕上的外星⼈全部击落 后,都加快游戏的节奏,让游戏玩起来更难。 14.2.1 修改速度设置 ⾸先重新组织 Settings 类,将游戏设置划分成两组:静态的和动态的。 对于随着游戏进⾏⽽变化的设置,还要确保在开始新游戏时重置。

这节解决什么:这一节主要解决《第 14 章 记分》里一个更具体的子问题:14.2 提高难度 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

14.3 记分

14.3 记分 下⾯来实现记分系统,以实时地跟踪玩家的得分,并显⽰最⾼分、等级和 余下的⻜船数。

这节解决什么:这一节主要解决《第 14 章 记分》里一个更具体的子问题:14.3 记分 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

14.4 小结

14.4 ⼩结 在本章中,你学习了如何创建⽤于开始新游戏的 Play 按钮,如何检测⿏标 事件,以及如何在游戏处于活动状态时隐藏光标。你可以利⽤学到的知识 在游戏中创建其他按钮,如显⽰游戏玩法的 Help 按钮。你还学习了如何随 游戏的进⾏调整节奏,如何实现记分系统,以及如何以⽂本和⾮⽂本⽅式 显⽰信息。 项⽬ 2 数据可视化

这节解决什么:这一节主要解决《第 14 章 记分》里一个更具体的子问题:14.4 小结 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

辨析题

为什么‘记分’这种看似简单的功能很值得单独学一章?

本章图版学习路径

反馈不是装饰,而是用户理解系统状态的窗口

显示层和逻辑层不同步,是交互程序最常见的隐性错误