生命应张弛有度!前面连续三节课程中,我们进行了紧张的原生引擎封装工作,这一节我们来做一点轻松的内容!
在与 AI 对战过程,人类玩家经常需要悔棋功能,这种让时间倒流的技能不会太简单的,这一节的任务就是让我们的象棋游戏支持悔棋!
本节概要
- 重构 Phase 类,抽取记谱功能
- 依据棋谱记录添加悔棋逻辑
- 显示对战着法的棋谱
Phase 重构
目前,在我们的 Phase 类中已经存在一些记录之前走棋过程的能力,我们将重构这一部分的设计,在一个专门的记录工具类中实现更完善的行棋记录功能,以为悔棋的实现作好准备。
我们在 lib/cchess 下新建一个 cc-recorder.dart 文件,计划由它来记录走棋的整个过程:
class CCRecorder {
//
// 无吃子步数、总回合数
int halfMove, fullMove;
String lastCapturedPhase;
final _history = <Move>[];
CCRecorder({this.halfMove = 0, this.fullMove = 0, this.lastCapturedPhase});
}
大家可以发现这个类中的三个成员变量都在 Phase 类中出现过了,我们现在这里创建 Recorder 工具,稍后我们从 Phase 中将这部分功能转换到新建的 Recorder 中来。
接下来,我们为 CCRecorder 类添加几个方法,用于记录新的行其步骤以及悔棋时,删除掉尾部添加的着法:</
本节教程介绍了如何在象棋游戏中添加悔棋功能和显示棋谱。首先,通过重构Phase类并创建CCRecorder类来完善记谱功能,为悔棋做准备。接着,实现了悔棋逻辑,允许玩家回退指定步数。最后,更新了游戏界面,展示当前对局的棋谱信息。通过这些改动,玩家现在可以查看历史着法并进行悔棋操作,增强了游戏体验。
订阅专栏 解锁全文
2176

被折叠的 条评论
为什么被折叠?



