Skip to content

kongxiangchx/ChineseChess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChineseChess

基于 Android 的中国象棋

主要技术

  • 实现了棋子走法的生成、象棋局面的判断。
  • 使用 PVS 搜索算法、置换表启发算法、历史表启发算法、迭代加深和知识库的组合作为最终的博弈树搜索算法。

棋子走法的生成

  • 步数有限的棋子,如帅(将)、仕(士)、象(相)、马和兵(卒),使用偏移数组来得到棋子所有可能到达的位置,然后再判断棋子到达该位置是否合法即可。
  • 步数不限的棋子,如车、炮,使用十字扫描法,即沿着上下左右四个方向扫描,来得到棋子所有可能到达的位置。

象棋局面的判断

  • 将军局面的判断
    使用反向思维进行考虑,给帅或将赋予对方攻击性棋子的走法,进而找出要吃它的棋子。
  • 胜利局面的判断
    遍历一方所有可能的走法,如果都被将军,则该方失败,另一方获胜。
  • 和棋局面的判断
    1. 重复局面出现4次(局面使用Zobrist哈希算法)
    2. 双方都没有攻击性棋子
    3. 连续60回合双方都没有吃过一个棋子

博弈树搜索算法部分

  • PVS 搜索算法
  • 置换表启发算法
  • 历史表启发算法
  • 走法排序
  • 迭代加深
  • 知识库

界面展示

  • 主界面

1

  • 设置

2

  • 双人对弈

3

  • 人机对弈

4

  • 人机对弈中的设置

5

About

基于Android的中国象棋

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages