GitHub | 您所在的位置:网站首页 › xiangqi › GitHub |
中国象棋 Python | Chinese Chess Python
特性
代码简洁:仅仅使用一百多行代码即实现了中国象棋,并具有简单对战功能。
性能高效:经测试水平在初学者之上。
使用传统象棋表示方法来表示棋子移动。
缺点
现代竞技象棋有许多复杂的规则,例如不得长将,长吃等,参见2011版象棋规则。本程序仅实现了基本规则,未实现禁手。
没有引入随机参数,导致在相同局面下程序总是会有相同的输出。
注意
本程序使用的象棋棋子来自Unicode13中的棋类符号,如果你的电脑能正确显示以下几个字符:🩠 🩡 🩢 🩣 🩤 🩦 🩥 🩧 🩨 🩩 🩪 🩫 🩭 🩬,则可以最大程度上利用本程序,否则请在运行程序时设定棋子编码参数p/piece为chinese,即python xiangqi.py -p chinese或python xiangqi.py --piece chinese。
因为字体关系,有些字体中文字符长度不等于两个英文字符长度,所以显示的棋盘可能没有对其,可以通过设定宽度参数w/width来进行调节,即python xiangqi.py -w 2或python xiangqi.py --width 2。
测试运行环境为Ubuntu20.04,使用系统terminal,字体为Monospace Regular。
运行截图
如果添加设置参数--pieces chinese 运行程序 python xiangqi.py -p unicode -w 1 棋盘显示本仓库代码还实现了中文棋盘显示,运行python draw_board.py即可。同样,如果字体不支持Unicode13, 可修改draw_board.py第一行为def chinese_chess(mode=''):。效果如下所示: 如果字体支持Unicode13 如果不支持Unicode13 参考资料xiangqi.py: 算法及代码部分,主要借鉴sunfish 算法原理介绍:MTD(f)算法 子力价值判断及局面判断权重,主要使用了Computer Chinese Chessdraw_board.y: 棋盘绘制,主要参考Unicode chessboard in a terminal FEN格式串介绍:象棋百科全书 |
CopyRight 2018-2019 实验室设备网 版权所有 |