/xiangqi

Chinese Chess | Xiangqi | 中国象棋 | Python

Primary LanguagePythonOtherNOASSERTION

**象棋 Python | Chinese Chess Python

特性

  • 代码简洁:仅仅使用一百多行代码即实现了**象棋,并具有简单对战功能。
  • 性能高效:经测试水平在初学者之上。
  • 使用传统象棋表示方法来表示棋子移动。

缺点

  • 现代竞技象棋有许多复杂的规则,例如不得长将,长吃等,参见2011版象棋规则。本程序仅实现了基本规则,未实现禁手。
  • 没有引入随机参数,导致在相同局面下程序总是会有相同的输出。

注意

  • 本程序使用的象棋棋子来自Unicode13中的棋类符号,如果你的电脑能正确显示以下几个字符:🩠 🩡 🩢 🩣 🩤 🩦 🩥 🩧 🩨 🩩 🩪 🩫 🩭 🩬,则可以最大程度上利用本程序,否则请在运行程序时设定棋子编码参数p/piecechinese,即python xiangqi.py -p chinesepython xiangqi.py --piece chinese
  • 因为字体关系,有些字体中文字符长度不等于两个英文字符长度,所以显示的棋盘可能没有对其,可以通过设定宽度参数w/width来进行调节,即python xiangqi.py -w 2python xiangqi.py --width 2
  • 测试运行环境为Ubuntu20.04,使用系统terminal,字体为Monospace Regular。

运行截图

xiangqi_unicode

如果添加设置参数--pieces chinese

xaingqi_chinese

运行程序

python xiangqi.py -p unicode -w 1

棋盘显示

本仓库代码还实现了中文棋盘显示,运行python draw_board.py即可。同样,如果字体不支持Unicode13, 可修改draw_board.py第一行为def chinese_chess(mode=''):。效果如下所示:

如果字体支持Unicode13

draw_board

如果不支持Unicode13

draw_board

参考资料

xiangqi.py:

draw_board.y: