一个小建议:可以考虑下 GitHub - casouri/valign: Pixel-perfect visual alignment for Org and Markdown tables. 这样的处理方式,用实线代替虚线。
车马相士将炮兵刚好可以对应键盘 CMXSJPB 选子
3 个赞
牛逼啊,有趣
已经实现了走子/吃子规则,但将帅尚未实现不能见面的规则. 接下来的工作:
- 将帅不可见面
- 将军判断
- 输赢判决
- 悔棋功能
- 人机对战
1 个赞
1 个赞
就高性能搜索才需要 bit encoding 节约体积,不讲究的用 list of list 的都有
一开始不知道 elisp 有数组,所以弄成了 list 套 list,不过现在懒得改了,只要不做人工对战,光人工走棋这没啥性能要求.
有联机的功能吗?
应该不会有人想在 emacs 中联机玩象棋吧
emacs用户可能愿意。 联机的话需要服务器吧,或者用区块链分布式点对点联机。
这个看起来还成了大工程,尤其想玩联机的话
区块链象棋一般人玩不起吧…
联机我感觉比较那啥,还是先实现人机对战靠谱,起码不用人格分裂自己跟自己下了.
国际象棋是可以联机玩的,lichess平台提供了对战api,自己用emacs画好界面调api连上去就可以联机对战了
刚刚实现了保存和加载棋局.
elisp 干这事简直不要太爽,只要把棋局当前状态包裹成为一个 lisp 对象,然后直接将其按输出格式写到文件中就 OK,加载的话,就将文件内容按 list 的读入语法加载到内存就行.
保存棋局执行 chess-cn–save 命令,会保存棋局文件到变量 chess-cn–saved-dir 指定目录下,以时间戳为文件名并以 .chess 为后缀. 该文件内容就是一个 list 对象,人眼可读.
加载棋局执行 chess-cn–load 命令,选择棋局文件即可,默认展开到 变量 chess-cn–saved-dir 指定目录下.
棋步历史和悔棋也搞定了,悔棋命令 chess-cn–undo (暂未绑定快捷键)
已添加将帅不可见面的规则。
搞定了将军判断以及将死判断(胜负判决).
1 个赞