最近正在开发一个字符界面的中国象棋,效果大概如下
代码见 https://gitee.com/zhcosin/emacs-chess-cn 以及 https://github.com/zhcosin/emacs-chess-cn
用法:
(add-to-list 'load-path "path/to/chess-cn.el")
(require 'chess-cn)
- 开启新对弈: chess-cn–new 命令(快捷键 C-c C-n),会打开一个名为 chess-cn 的缓冲区,
- 走子方法: 用方向键移动光标,回车键选择棋子,移动到目标位置再按回车键完成走子/吃子(目标位置无子为移动,有对方棋子为吃子,有己方棋为重新选子).
- 光标移动方法: 用上下左右方向键快速移动光标(在棋盘格子间移动而非按字符移动),也实现了 emacs 和 evil 的光标移动快捷键(后者需要安装有 evil).
- 悔棋: chess-cn–undo 命令(快捷键 C-c C-u).
- 保存与加载棋局: chess-cn–save 命令保存当前棋局到文件(快捷键 C-c C-s), chess-cn–load 命令加载指定棋局文件(快捷键 C-c C-l).
快捷键列表:
- C-c C-n 开启新对弈
- C-c C-u 悔棋
- C-c C-s 保存棋局到文件
- C-c C-l 从文件加载棋局
开发进度:
- [X] 字符界面表示层(界面绘制,棋盘坐标与缓冲区位置互相转换)
- [X] 内核框架(对弈方,兵种,棋子,棋局,棋步等)
- [X] 走子/吃子规则,将帅不可见面规则,走棋后己方将帅不可面临威胁规则
- [X] 棋局上快速移动光标(按格子移动而非按字符移动)
- [ ] 中文棋谱术语
- [X] 将军判断与胜负判决(将死)
- [X] 棋步历史与悔棋
- [X] 棋局保存与加载
- [X] 规则违反提示信息展示
- [ ] 当前选子突出展示,最后一步落子突出展示
- [ ] 摆放残局
- [ ] 人机对战(极大极小搜索算法)