基于 Android 的中国象棋
- 实现了棋子走法的生成、象棋局面的判断。
- 使用 PVS 搜索算法、置换表启发算法、历史表启发算法、迭代加深和知识库的组合作为最终的博弈树搜索算法。
- 步数有限的棋子,如帅(将)、仕(士)、象(相)、马和兵(卒),使用偏移数组来得到棋子所有可能到达的位置,然后再判断棋子到达该位置是否合法即可。
- 步数不限的棋子,如车、炮,使用十字扫描法,即沿着上下左右四个方向扫描,来得到棋子所有可能到达的位置。
- 将军局面的判断
使用反向思维进行考虑,给帅或将赋予对方攻击性棋子的走法,进而找出要吃它的棋子。 - 胜利局面的判断
遍历一方所有可能的走法,如果都被将军,则该方失败,另一方获胜。 - 和棋局面的判断
- 重复局面出现4次(局面使用Zobrist哈希算法)
- 双方都没有攻击性棋子
- 连续60回合双方都没有吃过一个棋子
- PVS 搜索算法
- 置换表启发算法
- 历史表启发算法
- 走法排序
- 迭代加深
- 知识库
- 主界面
- 设置
- 双人对弈
- 人机对弈
- 人机对弈中的设置