Commit Graph

326 Commits

Author SHA1 Message Date
CalciteM Team 03294e1557 临时调整 config.h 以后续调试 Hash 用 2019-07-13 15:04:03 +08:00
CalciteM Team 88fec0b8bf hash改名为hashCheckCode以免和后面添加的真正的hash值名称冲突 2019-07-13 14:59:22 +08:00
CalciteM Team 0d5306514a 删除部分无用代码 2019-07-13 14:42:38 +08:00
CalciteM Team 4e43de6663 去除一处被反复调用的 setTips 以提高性能6% 2019-07-13 13:56:31 +08:00
CalciteM Team 87ff9a3927 Qt: 将 config.h 加入 Qt 工程 2019-07-13 11:07:23 +08:00
CalciteM Team fe87db7666 调试完成故重新启用随机走子 2019-07-13 11:05:22 +08:00
CalciteM Team 30d458a76a 生成合法着法前先给 children 数组扩容到48
i7 CPU 上,自对战再提速 18%,耗时由 109s 缩短到 90s
2019-07-13 11:01:31 +08:00
CalciteM Team bf26f291a1 Node子节点不用list改用vector使得提速20%
i7 CPU,自我对弈从 136s 缩短到 109s

sortLegalMoves CPU性能占用率从13%下降到2.3%
2019-07-13 10:34:08 +08:00
CalciteM Team 332f3c181b Disable rand move 2019-07-13 09:05:13 +08:00
CalciteM 006a548d69 吃子优先级和摆子优先级相反 2019-07-12 01:15:46 +08:00
CalciteM ff1d7dce84 优先级表调整为内圈十字架优先于外圈十字架 2019-07-10 23:16:58 +08:00
CalciteM ffa742881a 自动生成的棋谱后缀改为 .txt
之前只能用命令
ls *.log | awk -F'.'  '{print $1}'|xargs -i -t mv {}.log {}.txt
把 log 批量改为 txt
2019-07-10 23:02:41 +08:00
CalciteM eb2121046d 每下一着之前才重新随机生成着法候选列表以提升效率 2019-07-10 02:05:33 +08:00
CalciteM 556bb7b94f 新增 RANDOM_MOVE 宏用于随机摆棋
(中圈和外圈等效,和未开启此宏时的细分表现暂时不统一)

程序效率下降 1/3
2019-07-10 01:00:06 +08:00
CalciteM f700aa3d70 Enable IDS 2019-07-09 01:06:14 +08:00
CalciteM 3a62763653 因不稳定故关闭 DONOT_DELETE_TREE 2019-07-07 23:14:35 +08:00
CalciteM 54947bfe01 打开 DONOT_DELETE_TREE 宏时不删除子节点以用空间换时间
Release自对弈双方总耗时由33s缩短到20s
2019-07-07 22:27:23 +08:00
CalciteM 7d6631317a 去掉 addNode 中的 rand() 操作
Node 节点中的 rand 暂时未去除

Release自对弈一方: 15.551s->14.930s
2019-07-07 21:46:40 +08:00
CalciteM d32ff9bbff 优化 addNode 函数性能
Release 自对弈一方的时间从30s缩短到15s
某个着法深度为8时,从原来的 47.405 s 缩短到 34.072 s,节省 30 % 耗时
2019-07-07 21:41:46 +08:00
CalciteM 96e9ae565f sortLegalMoves 增加一段代码备用
目前启用后会出现打印的着法没有显示最优着法,待完善
2019-07-07 20:43:43 +08:00
CalciteM e8ee553d50 动态深度表上调深度 2019-07-07 17:18:18 +08:00
CalciteM 115cc3ab3c 修改水平线效应判断改为根据是否剪枝来决定是否加深 2019-07-07 17:08:08 +08:00
CalciteM cc522bff7f 摆子优先考虑占据斜线 2019-07-07 16:52:17 +08:00
CalciteM b0d2884dbf 打印是选择的最佳着法缩减到没有被剪枝的选择 2019-07-07 15:34:22 +08:00
CalciteM c55b10b129 不搜索翻转局面的HASH 2019-07-07 12:59:07 +08:00
CalciteM 86688629d7 hash 不更新 depth 2019-07-07 12:03:49 +08:00
CalciteM 564fb3677d 去除hash更新depth机制前的备份 2019-07-07 11:20:14 +08:00
CalciteM 15dd9b5891 增加hashf 未完善 2019-07-07 11:03:06 +08:00
CalciteM 42f6b5d0d2 增加 recordHash() 2019-07-07 10:48:19 +08:00
CalciteM 4d72e101d2 将搜索哈希放在叶子结点处理流程之前 2019-07-07 10:24:26 +08:00
CalciteM Team d38200dce5 每走一步棋更新 Hash 值以提升效率
已知问题:
棋力明显下滑,待调试
2019-07-07 03:27:29 +08:00
CalciteM Team ae247bad52 只对最优着法且为吃子的着法多搜索一层 2019-07-06 19:06:24 +08:00
CalciteM Team bae40a0360 AI: 更改函数名以更表意 2019-07-06 16:17:43 +08:00
CalciteM Team 22d450a193 招法改名为着法并添加更多注释 2019-07-06 15:32:19 +08:00
CalciteM Team 2366f8eae1 AI: 添加注释并删除无用代码 2019-07-06 08:27:21 +08:00
CalciteM Team ab8525f1a5 目前Hash算法会越下越慢故关闭 2019-07-06 02:48:35 +08:00
CalciteM Team d27485b06f AI时间上限改为120秒 2019-07-06 01:49:54 +08:00
CalciteM Team 7afa962ed9 即便超时时发生 Error 也返回首个招法 2019-07-06 01:49:25 +08:00
CalciteM Team 2c0ad67e23 AI超时时间改为30秒 2019-07-06 00:31:40 +08:00
CalciteM Team adda89c6b4 新建游戏时清空哈希表
否则除了首盘棋力正常,后面会变弱
2019-07-05 23:39:49 +08:00
CalciteM Team 1a196fe57f 棋未下完就新建游戏算投降 2019-07-05 01:45:01 +08:00
CalciteM Team 8dc56dfa21 棋未下完就新建游戏,算玩家2得分 2019-07-05 01:44:59 +08:00
CalciteM 1d122bd4cd Hash: Style: Refactor 2019-07-05 01:36:00 +08:00
CalciteM d65e79038d 解决 RANDOM_BEST_MOVE 未开启时编译不通过的问题 2019-07-04 23:36:28 +08:00
CalciteM Team b6fb08988b 动态搜索深度加深并10步才选1步次优着 2019-07-04 02:16:43 +08:00
CalciteM Team a2d1e2616f 右上角时间栏改造成计分栏 2019-07-04 02:05:45 +08:00
CalciteM Team 0e82b83941 20%概率下次优棋 2019-07-04 00:35:27 +08:00
CalciteM Team 1795357070 最优招法随机选最优的两步其中一步 2019-07-04 00:12:05 +08:00
CalciteM 619217a5eb 解决随机不生效的问题 2019-07-03 22:15:01 +08:00
CalciteM 84e937a8f2 修改 sortChildren 中的 Lambda 函数 2019-07-03 01:18:02 +08:00
CalciteM b7b11eb659 提升启用水平线效应时的搜索深度 2019-07-02 23:12:18 +08:00
CalciteM 7085a6cb09 AI: 若遇到吃子则搜索深度加1层 2019-07-02 00:46:20 +08:00
CalciteM 308cb5b9c8 调整动态深度表以提高前几着的速度 2019-07-01 22:44:36 +08:00
CalciteM 532994e96a 目前 AB_RANDOM_SORT_CHILDREN 宏开启后变得很弱故临时关闭 2019-07-01 22:44:23 +08:00
CalciteM aa0898b19d 对 value 相同的进行随机排序 2019-07-01 00:51:08 +08:00
CalciteM 2113b75206 IDS使用宏控制并打印计算时间 2019-06-30 23:51:48 +08:00
CalciteM 191e507600 VC: Release 编译时使用速度优先优化 2019-06-30 21:09:06 +08:00
CalciteM 2aa99e4bf3 使用深化迭代取代随机排序 2019-06-30 18:39:05 +08:00
CalciteM 5b474c2458 增加用于改变深度的 changeDepth() 函数并将动态调整和固定变为互斥 2019-06-30 16:43:24 +08:00
CalciteM f5a7f0ce22 让 rootNode 也通过 addNode() 构建 2019-06-30 16:13:13 +08:00
CalciteM c80759fe1e 剩余的 Data 改名为 Context 2019-06-30 15:39:25 +08:00
CalciteM ed5cf81712 DEBUG宏不开时也打开 GAME_PLACING_DYNAMIC_DEPTH 2019-06-30 14:41:09 +08:00
CalciteM bdf7d45a62 打印遍历过的结点个数和占总结点个数比例 2019-06-30 13:35:46 +08:00
CalciteM f5573e9f06 重构 alphaBetaPruning 暂时改为在循环中判断先后手 2019-06-30 12:29:22 +08:00
CalciteM 7273f29974 Node结构体增加成员表征局面 2019-06-30 11:59:06 +08:00
CalciteM 810f639f29 取消游戏结束弹框 2019-06-30 11:00:22 +08:00
CalciteM b644ba19e8 调整一些宏选项 2019-06-30 09:57:44 +08:00
CalciteM 44382b55da 替换获胜的声音资源
因为播放获胜音乐时经常卡顿

临时使用 QQGame
2019-06-30 09:57:01 +08:00
CalciteM e30ed9541a 游戏结束时弹框 2019-06-30 09:56:22 +08:00
CalciteM 4a392eba1d 新建游戏时若双方已共走了18步以上则自动保存棋谱
命名为 book_时间戳.txt
2019-06-30 08:52:28 +08:00
CalciteM 60397cb4b9 保存棋谱对话框的文件名加上时间戳 2019-06-30 08:22:55 +08:00
CalciteM 9d2f97420a 范例棋谱.txt 更名为 Sample.txt 2019-06-30 08:08:49 +08:00
CalciteM aa2fbd1221 文本: 将黑方/白方重新替换回玩家1/玩家2 2019-06-30 08:02:24 +08:00
CalciteM 3b6f3fce40 将 config.h 从 UTF-16 切换为 UTF-8 格式 2019-06-30 07:40:27 +08:00
CalciteM 9bb6c84008 解决DEBUG宏不开时编译不通过的问题并重构 config.h 2019-06-30 07:29:24 +08:00
CalciteM ed531d1c86 调整 Node 结构体成员顺序以方便调试 2019-06-29 20:00:41 +08:00
CalciteM 45e024c151 修复了规则允许提三连子的情况下电脑不会提的问题 2019-06-29 19:20:47 +08:00
CalciteM 4aacd59e08 AI: 添加移动方向的enum以及其他一些重构 2019-06-29 19:08:46 +08:00
CalciteM 81ceed4271 为调试AB树加入更多代码 2019-06-29 17:09:37 +08:00
CalciteM 1f04bde3ad 第1步的搜索深度由7改为2 2019-06-29 16:22:12 +08:00
CalciteM e72945814d 将 AB 树部分成员放在 DEBUG_AB_TREE 宏控制下 2019-06-29 15:53:41 +08:00
CalciteM b3d8c952f3 根据屏幕大小调整启动时的窗口大小 2019-06-29 15:39:33 +08:00
CalciteM Team 73d334ee60 窗口大小调大到1440并启动时居中 2019-06-29 13:17:39 +08:00
CalciteM Team d328d98069 启动时窗口最大化 2019-06-29 12:50:50 +08:00
CalciteM Team dd164595a0 摆棋阶段对最近移除的棋子置为选择状态 2019-06-29 12:03:45 +08:00
CalciteM Team a7f5f0a173 摆棋阶段在叉下面显示被吃的子 2019-06-29 10:24:47 +08:00
CalciteM Team a44b0687de 临时调整摆棋阶段搜索深度为2 2019-06-29 00:35:42 +08:00
CalciteM Team 650c694ca5 style: refactor 2019-06-29 00:10:59 +08:00
CalciteM Team 88fded38d8 sytle: 变量 itor 改名为 iter 2019-06-28 23:09:50 +08:00
CalciteM Team be80990f93 调整代码格式 2019-06-28 23:06:38 +08:00
CalciteM Team ffac849fac 新增 config.h 用于宏定义配置 2019-06-28 21:58:27 +08:00
CalciteM Team 0aa7d11ead 位置权重计算方法有误故先去除 2019-06-27 03:17:46 +08:00
CalciteM Team 710b52793c 动态调整搜索深度 2019-06-27 02:47:32 +08:00
CalciteM Team 8a07970f7d 修复之前不慎误修改的判断少于2字即失败的判断方法 2019-06-27 02:46:58 +08:00
CalciteM Team d1f37c2e6d 在 node 的成员中加入 cmd 以方便查看结点的命令 2019-06-27 02:45:45 +08:00
CalciteM Team 8ffcc55bb7 增加宏用于不剪枝方便调试 AB 树 2019-06-27 00:11:10 +08:00
CalciteM Team 1feeb914ed node 增加 stage/action/depth 属性以便于调试 2019-06-26 02:20:34 +08:00
CalciteM Team b21474a475 调整分值让部分分值和原始版本一致 2019-06-26 00:16:11 +08:00
CalciteM Team cfc87be138 解决计算 value 时未考虑走子阶段被闷死的问题
并调整分数值
并对不同点位赋予不同分值,以尽量争抢斜线和中央位置
2019-06-25 02:09:46 +08:00
CalciteM Team a07b300851 DOS to Unix format 2019-06-25 00:30:27 +08:00
CalciteM Team 30b4504197 AI: 修复评估 value 时未考虑闷棋状态的 Bug 2019-06-25 00:28:46 +08:00
CalciteM ab350e0008 优化界面友好性 2019-06-23 23:23:57 +08:00
CalciteM cee5cc0efa 临时替换声音资源
临时使用QQGame
2019-06-23 23:03:22 +08:00
CalciteM bfa8f6d16e 走棋阶段将深度调整为 10 2019-06-23 21:22:45 +08:00
CalciteM 115a8734d9 重新启用随机排序 2019-06-23 18:59:22 +08:00
CalciteM 368a494426 暂时将帮助菜单置灰并去掉赢旗音效 2019-06-23 18:19:54 +08:00
CalciteM f8baa06e76 AI: 遍历深度改为7 2019-06-23 17:42:30 +08:00
CalciteM 9a37bd0132 添加遍历过的节点个数统计以及超时提示 2019-06-23 17:41:10 +08:00
CalciteM 0ef0b3ecc7 重新启用声音 2019-06-23 16:26:17 +08:00
CalciteM 9e5d6feb7d refactor 2019-06-23 15:27:50 +08:00
CalciteM 4b96b675e5 若为先手则第一着棋抢占星位 2019-06-23 15:27:32 +08:00
CalciteM d0fc84787c AI: 增加 getOpponent 函数并给 Player 枚举改名 2019-06-23 14:34:02 +08:00
CalciteM 59f286dab4 refactor 2019-06-23 13:35:34 +08:00
CalciteM 0497d01d80 恢复回: 如果形成去子状态,每有一个可去的子,算100分 2019-06-23 11:51:52 +08:00
CalciteM 87ebd70542 创建招法表和成三表独立成函数 2019-06-23 11:49:14 +08:00
CalciteM 8dea438bae 修复提交2a2ac8c引入的 j 被覆盖的问题 2019-06-23 11:36:34 +08:00
CalciteM 840f328ac8 style refactor 2019-06-23 11:23:49 +08:00
CalciteM 2a2ac8c7af 增加若干宏 2019-06-23 11:08:57 +08:00
CalciteM 49b2080238 AI: 改名为 oldPos 提高可读性 2019-06-23 10:34:03 +08:00
CalciteM 08d25eafbc 新增 addNode() 函数 2019-06-23 10:25:44 +08:00
CalciteM 9ae53628f8 temp 2019-06-23 09:26:40 +08:00
CalciteM f720014bf0 ai: refactor 2019-06-23 09:19:36 +08:00
CalciteM 3a83afac0d 部分代码改为 Unix 格式换行 2019-06-23 08:11:29 +08:00
CalciteM 385210fe37 完善AI打印 2019-06-23 00:44:39 +08:00
CalciteM 64c50a50be AI深度改为3且时间改为99秒 2019-06-23 00:01:29 +08:00
CalciteM 77c9ad476e 控制台打印第一级子树的值 2019-06-23 00:00:38 +08:00
CalciteM f25fbc21ec 增加 move 相关注释以标明 move 和棋盘点的对应关系 2019-06-22 23:06:00 +08:00
CalciteM 2339f07dff 深度和限时的限制扩大 2019-06-22 21:51:56 +08:00
CalciteM ba8b5768f2 价值评估中加大去子权重 2019-06-22 21:36:23 +08:00
CalciteM 4086f2b434 临时禁止发声 2019-06-22 20:23:21 +08:00
CalciteM a598e569ec 标题由九连棋改为三棋 2019-06-22 20:08:25 +08:00
CalciteM 5a34d2c951 AI搜寻深度临时由8改为2 2019-06-22 20:04:27 +08:00
CalciteM 21a2fda71e refactor 2019-06-22 18:46:44 +08:00
CalciteM 3fd746012c 去除AB剪枝时对子节点的随机排序 2019-06-22 18:30:48 +08:00
CalciteM Team 6a3aac64aa 在棋盘上画 SEAT 编号 2019-06-22 17:04:11 +08:00
CalciteM Team 55f2b3e6c8 删除 ninechess.vcxproj.user 2019-06-22 16:01:47 +08:00
CalciteM a161c36b1a 打三棋规则改为: 当前子处于“三连”之中依然可以去子 2019-06-22 15:54:42 +08:00
CalciteM Team 961250d466 refactor 2019-06-22 10:43:36 +08:00
CalciteM Team 08ba141658 格式化代码
* 函数内部代码块 { 后置,其余情况左置
* 作为指针时,* 紧挨变量名
* 函数语句块不允许和函数定义放在同一行
2019-06-21 01:26:37 +08:00
CalciteM Team c622ac0de6 消除W4级别的VC编译器警告 2019-06-21 00:55:49 +08:00
CalciteM Team 3e563edcd5 aithread.cpp: 调试打印用 DEBUG 宏隔离 2019-06-20 23:44:15 +08:00
CalciteM Team 21808bce1a 窗口初始化时默认由第2号设为第1号规则(打三棋) 2019-06-20 01:55:57 +08:00
CalciteM Team e2d1ceedcf 将 NineChess/NineChess.rc 的编码从 UTF-16 改为 UTF-8
并将中文字符改为英文。以解决 Qt 下编译失败的问题。

然而文件头注释为:
// This file need to be saved as UTF-16
// In utf-8, it will lead to a gibberish
故此修改是否有影响存疑。
2019-06-20 01:01:54 +08:00
CalciteM Team 42e80f70f2 Delete *.pro.user 2019-06-20 00:58:46 +08:00
CalciteM Team 0e36f47ecb 打三棋规则改为多个“三连”只能提一子 2019-06-19 02:10:24 +08:00
CalciteM Team 42ebd0b92e 项目文件升级到 VS2019 + Qt5.13.0 2019-06-19 01:24:40 +08:00
liuweilhy a588f4af53 更新ReadMe,添加下载链接 2018-12-23 22:26:52 +08:00
liuweilhy 541017a91f 更新AI算法,置换表待优化 2018-12-23 21:14:04 +08:00
liuweilhy 435a82ac5e 添加AI设置——深度和定时器功能 2018-12-16 23:06:02 +08:00
liuweilhy df2b4f8f7a 线程退出逻辑优化 2018-12-15 17:44:20 +08:00
liuweilhy a71536f825 完善镜像、翻转、旋转等局面变换;
修正时间纪录bug。
2018-12-15 00:03:07 +08:00
liuweilhy 82b39b02ac 添加棋局的镜像、翻转、旋转算法,未完成,临时上传。 2018-12-11 23:28:25 +08:00
liuweilhy d762f55d70 AI进一步优化 2018-12-09 19:11:22 +08:00
liuweilhy 3d36cefa8d AI与GUI交互逻辑优化 2018-12-09 04:09:17 +08:00
liuweilhy 76da5d3527 修改了一些bug,但AI仍然有些蠢 2018-12-06 22:09:40 +08:00
liuweilhy 24d897eb69 AI勉强能动,还是得改 2018-12-04 00:22:00 +08:00
liuweilhy 41917c1d74 ai勉强能动,但不能正确使用,临时存一下,不要拉取使用! 2018-12-03 00:07:52 +08:00
liuweilhy a99577d089 重构NineChess模型,做了数据分离,评估用的数据大小从304字节减小为88字节。 2018-12-02 01:03:54 +08:00
liuweilhy 2e9a690df3 NineChess模型类重构前的最后一次提交,Windows和Linux下都能正确编译。
下一步为AI做准备,改模型为位棋盘形式。
2018-12-01 00:14:41 +08:00
liuweilhy 022ae41475 添加AI算法框架,大量修改模型 2018-11-29 03:35:48 +08:00
liuweilhy 3ab9610c07 添加没有AI线程框架,但没有具体实现 2018-11-20 23:32:43 +08:00
liuweilhy 7d21235d28 v1.3 Linux版本发布,需要Qt5.12.0版本支持 2018-11-14 21:48:00 +08:00
liuweilhy 602af2b340 AI运用前的最后一次GUI更新:
优化了大量编译警告,优化场景动画,添加禁止音效。
2018-11-14 21:00:00 +08:00
liuweilhy 0f3c3819fd 修正Linux下g++编译出错的问题;
修正Linux下部分音效失效的问题。
2018-11-12 00:14:04 +08:00
liuweilhy 99109ee1ed 动画优化,ReadMe重写 2018-11-08 00:18:53 +08:00
liuweilhy e7c41e3f58 添加动画功能 2018-11-06 23:39:02 +08:00
liuweilhy 4f67764a69 添加自动运行功能;
修正招法菜单bug;
优化局面显示方法,为动画做准备。
2018-10-17 00:49:03 +08:00
liuweilhy c4c1bdf583 优化结构,内嵌声音 2018-09-21 02:13:15 +08:00
liuweilhy a22595a93d 添加棋谱文件的打开和保存功能 2018-09-01 22:35:52 +08:00
liuweilhy bdea2253bb 完善历史局面浏览和从中间重新开始 2018-08-21 23:02:19 +08:00
liuweilhy 2d7a795f97 完善“历史局面”功能 2018-08-20 00:52:58 +08:00
liuweilhy b3654dd794 增加棋谱功能 2018-08-18 11:47:27 +08:00
liuweilhy 2f8fbab50a 添加命令行时间参数,删除界面tabWidget 2018-07-01 20:31:39 +08:00
liuweilhy b95e6b276b 添加命令行解析和生成功能 2018-06-10 01:47:32 +08:00
liuweilhy 47aca2dfb7 修复飞子阶段bug,增加标签页 2018-06-03 19:44:45 +08:00
liuweilhy e66ef36927 2018/5/21清理项目(17MB),重新提交2018/5/19日版:
游戏可以正确运行,实现本机对战功能,其它功能待完善。
2018-05-21 23:43:19 +08:00