本文主要是介绍检查对战结果:实现胜负的逻辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
中国象棋游戏的胜负判断非常复杂,以至于象棋游戏的裁判都需要进行等级考试!
通常来说,人机对战的胜负判断要比真实比较比赛的裁判简单很多。在人机对战游戏中,我们要实现的逻辑是有限的:
- 如果 A 方行棋后,无论对方走什么棋,下一步都能吃掉对方的老将,则可判断 A 方获胜
- 如果 A 方行棋后,对方无棋可走,则可判断 A 方获胜
- 如果 A 方连续将军,造成三个连续的重复局面,则判断 A 方败阵
- 无吃子超过 60 个回合,判和棋
其它的关于「捉、闲」、「一将一闲」这些情况,我们不在 App 中实现。
本节概要
- 静态检查游戏结果
- 检查长将情况
- 检查和棋情况
开启新对局
在进行对战结果的检查前, 我们先看看如何开启一个新的对局。
棋盘走几步之后,想「重新开始一个新的对局」的需求比较强烈,我们优先解决这个强需求。
我们在 Phase 类中添加一个新的方法 initDefaultPhase,将原来 defaultPhase 构造方法中所有代码移动到 initDefaultPhase 方法中,在空的 defaultPhase 方法中添加对 initDefaultPhase 方法的调用,调整后的 Phase 类像下边这样:
...class Phase {...Phase.defaultPhase() {initDefaultPhase();}void initDefaultPhase() {//_side = Side.Red;_pieces = List<String>(90);
这篇关于检查对战结果:实现胜负的逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!