到现在为止,我们的象棋游戏能支持玩家与云库引擎正常地交替下棋了!但现在的游戏没有细致的规则限制,玩家可以不按照中国象棋的规则行棋。本节我们需要限制用户的行棋动作,遵循象棋游戏的通用规则。
本节概要
- 中国象棋游戏规范介绍
- 实现可行着法枚举工具类
- 实现着法合法性检查工具类
- 应用着法合法性检查
中国象棋游戏规范
知道大家都不爱看文档,所以我简单地把行棋的规则和一般的输赢判断规则列举一下。
着法合法性检查规则:
- 车走直线、马踩日,炮打翻山、象飞田,兵卒过河左右走,仕象不离老将边;
- 行棋着法不能吃已方棋子;
- 车只能在一条线上走子,直到遇到第一个障碍棋子,如果棋子是敌方的,可以吃掉它;
- 马走一个日字,但有「蹩腿」的行动限制;
- 象走一个田字,不能过河界,且有被「填心」的行动限制;
- 炮可以在一条直线上走子,直至遇到第一个障碍棋子,如果越过障碍棋子后在直线上遇到的第一个棋子是敌方棋子,可以吃掉它;
- 兵卒在冲过对方的河界之前,只能一次向前行走一步,过了敌方河界以后