Commit Graph

917 Commits

Author SHA1 Message Date
Calcitem 7b5e1a2f2b 解决 in_how_many_mills() 中当 c 为 NOBODY 时逻辑错误的问题
提交 1d7ecd6680 对
in_how_many_mills() 函数的开头

if (player == PLAYER_NOBODY) {
	player = locationToPlayer(square);
}

修改为:

if (c == NOBODY) {
	c = Color(locationToColor(square) >> PLAYER_SHIFT);
}

不符合本意。导致 c 变成 NO_COLOR。

现在更正之。

并全面消除 PLAYER_SHIFT (4)

和修改前对战700盘,胜率误差6%,可认为对胜率无影响,并且对自对弈效率也无影响。
2020-09-20 20:46:44 +08:00
Calcitem 51d8f7ed8c update_score() 提取到 xxx_piece(File f, Rank r) 函数执行 2020-09-20 17:48:14 +08:00
Calcitem cb1cba741c position: 去掉 set_position() 和 reset() 中多余的 update_score() 2020-09-20 17:20:28 +08:00
Calcitem c4be5d3da9 将 check_gameover_condition() 中对于对方是否总子数少于3的判断转移到 remove_piece() 中 2020-09-20 16:59:14 +08:00
Calcitem 6173894f20 rule: 去掉计时规则相关代码 2020-09-20 16:52:48 +08:00
Calcitem 962cece2c5 remove_piece: 将更新棋盘上棋子数以及检查游戏结束条件的语句提前
提前到判断 false 条件之后马上进行,更新 hash 值之前。
2020-09-20 16:39:53 +08:00
Calcitem e0ed37a13e position: do_move() 中统一使用 to_sq() 2020-09-20 16:26:23 +08:00
Calcitem 76091ff4e2 position: 消除部分 warning
微调语句顺序
2020-09-20 16:24:16 +08:00
Calcitem d09cbd54bc position: 更多使用 file_of(s) 和 rank_of(s) 2020-09-20 16:12:48 +08:00
Calcitem a45a8006e5 position: do_move() 中统一执行 move = m 操作 2020-09-20 15:56:07 +08:00
Calcitem 806b97d334 types: 新增 is_ok(Move m) 函数
顺带新增未完成的 Position::legal() 函数。
2020-09-19 23:38:47 +08:00
Calcitem b0e01f64b4 position: 删除 Position& Position::set(const string& code, Color c, StateInfo* si) 函数
TB 才用到,故删除。
2020-09-19 23:12:27 +08:00
Calcitem e1f066bbfc position: 基本完成 set 函数
put_piece() 因接口还未适配完成故暂不调用。
2020-09-19 23:05:41 +08:00
Calcitem 1e29418e2c check_gameover_condition: 改为参数个数为0
去掉 updateCmdlist 参数。
2020-09-13 00:38:09 +08:00
Calcitem 2640999584 check_gameover_condition(): Clear code 2020-09-13 00:23:17 +08:00
Calcitem 3945ab0383 refactor: 重构 put_piece() 2020-09-12 23:15:06 +08:00
Calcitem c2ee2e9c53 移除 cmdline 中的时间戳而只保留着法 2020-09-12 21:48:21 +08:00
Calcitem 0255584385 cmdlist 插入状态相关行时在命令行打印 2020-09-12 20:15:14 +08:00
Calcitem 81b202babe 大部分 sprintf 转移到 gameController
解决 cmdlist 移走到 gameController 后控制相关和状态相在 cmdlist
不见的问题。

目前自对弈耗时由5800ms左右缩减到5300ms左右。
2020-09-12 11:31:17 +08:00
Calcitem 26eb01e259 WAR: 临时性解决点击棋谱后无反应的问题
因为 cmdlist 移动框 gameController 后,每次重新开局被清空后
就没有首行的 s2... 了,临时解决方式是先备份这一行,清空后再
插回去。
2020-09-11 00:32:32 +08:00
Calcitem 51e5f22f06 cmdlist 从 Position 移动到 GameController 里
已知问题:
棋谱中目前只加入走棋棋谱,其他的控制相关和状态相关的不见了。
2020-09-11 00:31:40 +08:00
Calcitem dbc1e56dc3 position: refactor remove_piece() 2020-09-08 02:01:04 +08:00
Calcitem 9743664c1f position: 简化当摆棋完成时更换行棋方的逻辑 2020-09-08 01:43:57 +08:00
Calcitem d26c78580f nextMove() 返回值改为 string
并且 command 类型由 QString 改为 string。
2020-09-07 01:03:34 +08:00
Calcitem e1ecfcc2df 完成 UCI::move(Move m) 函数并全面应用 2020-09-07 00:05:14 +08:00
Calcitem dd10fcb8d3 全面使用 file_of() 和 rank_of() 代替旧函数 2020-09-06 23:38:14 +08:00
Calcitem ddbd0c2ea6 position: 使用 rule50 和 gamePly 代替老变量 2020-09-06 22:50:54 +08:00
Calcitem 2e57330126 put_piece(): refactor 2020-09-06 22:26:13 +08:00
Calcitem 81f5a5e5ce 改为使用确认OK的 make_square() 函数 2020-09-06 21:58:44 +08:00
Calcitem 5182518257 position: 实现 Position::set() 部分代码 2020-09-06 21:50:37 +08:00
Calcitem 79019ddb74 do_move() 改为传2个参数 2020-09-06 20:49:22 +08:00
Calcitem 79899d8f94 uci: 加回来代码 2020-09-06 20:32:08 +08:00
Calcitem a021eb9da7 GameController: Position * 改为 Position & 2020-09-06 12:37:35 +08:00
Calcitem 31d9bd8294 movegen/movepick: Position * 改为 Position & 2020-09-06 12:32:35 +08:00
Calcitem 490983195d eveluate: Position * 改为 const Position &
暂时去掉 UCI 代码。
2020-09-06 12:21:30 +08:00
Calcitem 69451b47f3 setTips: 处理黑白翻转的情况 2020-09-06 00:57:40 +08:00
Calcitem 6fcfad918c setTips: Position 指针改引用 2020-09-06 00:54:55 +08:00
Calcitem 80188e0547 analyze: 修复步数为16进制的问题 2020-09-06 00:51:29 +08:00
Calcitem 926fe1ad86 tips: 将 setTips 转移到 GameController
已知问题:
人类走棋后未刷新 Tips,AI走后才刷新。
2020-09-05 22:23:06 +08:00
Calcitem 03c9f72ab0 position: do_move() 等几个函数返回类型改为 void 2020-09-05 17:24:24 +08:00
Calcitem b379588655 fen: rule50 赋值但暂时未正常工作
按 Stockfish 的写法:
  ss << (" - ")
     << st->rule50 << " " << 1 + (gamePly - (sideToMove == BLACK)) / 2;

最后一节并非如 http://www.xqbase.com/protocol/pgnfen2.htm 所说的,
回合数(Fullmove number) 棕色那段
当前要进行到的回合数。不管白还是黑,第一步时总是以1表示,
以后黑方每走一步数字就加1。

原因待查。目前也未正常工作。
2020-09-05 17:13:37 +08:00
Calcitem 93dd3ba971 fen: 交换Phrase和sideToMove位置 2020-09-05 16:56:15 +08:00
Calcitem 5854bce2d9 fen: 增加 Phase 2020-09-05 12:40:17 +08:00
Calcitem 0a92670b60 hash: Key() 改为只返回 st->key
并优化 analyze 打印。
将 Fen/Key 打印转移到 Position 的 <<
2020-09-05 12:07:44 +08:00
Calcitem 079d1bd7bb PieceToChar: 黑棋改为@且空位改为* 2020-09-05 10:48:20 +08:00
Calcitem e654d82fde analyze: 打印棋局结果 2020-09-05 10:38:30 +08:00
Calcitem 782f3a14ac analyze: 打印 Key 2020-09-05 10:21:42 +08:00
Calcitem 7b1c3c5b14 analyze: 显示轮到谁行棋 2020-09-05 10:10:19 +08:00
Calcitem 5c34a678de analyze: 标明是面向哪方的局面的分析 2020-09-05 01:40:40 +08:00
Calcitem f75ce94dc3 console: 解决AI落子很快时棋盘打印不全的问题 2020-09-05 01:01:39 +08:00