当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 0 Fork 6

胡萝卜 / 中国象棋
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
WTFPL

中国象棋

介绍

  • 个人项目,中国象棋Qt界面与AI象棋引擎
  • 棋盘结构为 PEXT位棋盘 ,使用CPU中128位寄存器的低90位来存储棋盘,对应C++的数据结构为__m128i
  • 使用了 POPCNT指令,BMI位操作指令集中的PEXT与TZCNT指令,SSE指令集中的与、或、非、异或、零测试 等指令来进行走法预生成与快速运算,需要相应的CPU支持
  • 引擎算法基于超出边界(Fail-Soft)的AlphaBeta剪枝,使用迭代加深(含内部迭代加深)的搜索方式
  • 在局面评价上使用渐进式的评估方法对进行局面评估,考虑了棋子的子力价值、位置分、王安全分(包括空头炮、炮镇窝心马、沉底炮等危险棋形的评估)
  • 支持历史表启发,杀手启发,吃子启发,有良好的走法排序器
  • 支持基于SSE的无锁置换表裁剪、带验证的空着裁剪、落后着法衰减、杀棋步数裁剪、剃刀裁剪、无用裁剪、差值裁剪
  • 支持将军延伸和重复局面检测(支持长将检测和部分长捉检测)
  • 支持主要变例搜索、使用OpenMP与QtConcurrent并发库进行Lazy-SMP多线程搜索
  • 联网的情况下支持ChessDB提供的开局库、对局库和残局库,大约可提升引擎200ELO左右

软件架构

  • Qt、C++

开发环境

  • 集成开发环境: Qt最新版
  • 编译器: Qt最新版自带的最新版MinGW

语言标准

  • C++最新标准,开启GNU最新的语言级别扩展特性

引擎棋力(使用云库、CPU:i5-8265U)

天天象棋测试(使用云库、CPU:i5-8265U)

  • 可战胜业8-3纯人,得出本软件ELO大约为2000左右
  • 天天象棋人机对战可以战胜精英级别电脑(天天象棋分析12层),由此可得本软件大致与新版天天象棋分析13层相当。
  • 实战测试结果最高等级如下(该账号仅用于测试软件棋力,由于达到业余9-1后,再往后的测试需要实名认证,鉴于已经达到了测试的目的,所以该账号现已注销): 评测最高等级
  • 更多实战测试的内容在:https://www.bilibili.com/video/BV1eR4y1j777

JJ象棋测试(使用云库、CPU:i5-8265U)

  • 实战测试可战胜特大等级纯人,最高达到荣誉顶级,100盘胜率94%,有1盘掉线,1盘与其他软件作和,4盘输给其他软件,其余与纯人对战都赢了
  • 该账号仅用于测试软件棋力,由于特大等级的小部分人和荣誉顶级的绝大部分人都是软件,由于本软件不具备与其他软件对撕的能力,鉴于已经达到了测试的目的,故不再往后测试 评测最高等级

使用说明

  • 打开可执行即可运行程序

参与贡献

  • PikaCat

未来愿景

  • 这个引擎目前还有很多不完善的地方((>﹏<)一大堆捏~):

    1. 没有任何的审局眼光,虽然有云库不会开局落入飞刀局面,但是中局脱库后极其容易跳水,且无法识别官和局面(如双车对车士象全)。(这点将在NNUE版本推出后极大改善,但NNUE版本什么时候才能出来不确定,要看我什么时候能学完NNUE)
    2. 没有发挥出位棋盘该有的速度,相比于数组棋盘提升幅度不是很大,所以对应的程序实现还有很多未被发现的Bug没有解决。
    3. 搜索速度不快,剪枝力度不够大,NPS比不上免费的佳佳象棋引擎,更不用说商业引擎了。
    4. 没有UCI协议支持,目前无法使用命令模式将引擎与界面解耦。
    5. 没有引擎ELO测评平台,如CCRL。
    6. 没有测试平台,如fishtest。
  • 建立这个仓库的初心是看到国际象棋Stockfish引擎的开源仓库及其开源社区支持的强大支持,于是想着能不能在国内也建立一个这样的仓库,让更多象棋引擎爱好者参与引擎的改进,更新,提issue,提pull requests,众人拾柴火焰高。就像Stockfish超过商业引擎Komodo一样,有一天我们也能够媲美象棋旋风。

  • 我曾经看到过一句话,我很喜欢:If you love something, set it free. 来自虚幻引擎的官网。这里的free有两种意思,免费与自由。所以如果你喜欢一样东西,想让它变好,就让它免费吧,让它可以被它人自由获取吧!这也是我为什么要开源的原因,这也是我为什么使用WTFPL的原因。

  • 作为一条咸鱼ヾ(•ω•`)o,梦想还是要有的,万一实现了呢?

云开局库、残局库

参考文献

  1. 象棋百科全书:https://www.xqbase.com/computer.htm
  2. 象棋编程维基百科:https://www.chessprogramming.org/Main_Page
  3. Shark象棋引擎论文:http://rportal.lib.ntnu.edu.tw/bitstream/20.500.12235/106625/1/n060147070s01.pdf

参考代码

  1. 象棋小巫师: https://github.com/xqbase/xqwlight
  2. 象眼: https://github.com/xqbase/eleeye
  3. 国际象棋位棋盘: https://github.com/maksimKorzh/bbc
  4. 佳佳象棋:https://github.com/leedavid/NewGG
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO.

简介

个人项目,中国象棋Qt界面与AI象棋引擎 展开 收起
C++
WTFPL
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/carrots-abc/ChineseChess.git
git@gitee.com:carrots-abc/ChineseChess.git
carrots-abc
ChineseChess
中国象棋
master

搜索帮助