DDL:TBD
机器学习:五子棋对弈训练
五子棋对战平台:
棋盘大小 15x15
玩家1(黑子)先手:●
玩家2(白子)后手:○
下图中:(6, 5)为黑子,(9, 7)为白子 【坐标格式(x, y)】
棋盘最中心的棋子坐标是(8,8)
棋盘实例1 棋盘实例2
(图错了,坐标是从1~15,不是0~14)
五子棋规则:(以下先手均用黑子代替、后手均用白子代替)
1. 决策输入不能超过棋盘大小 1 – 15;决策输入不能覆盖原棋盘上已有棋子。
出现上述情况,在评比时直接判输。
2. 加入指定前三手开局,一共挑选了19种比较平衡的开局。
3. 黑棋有禁手。
4. 黑子胜利条件:黑子在未违规(三三禁手、四四禁手、长连禁手等)下达成五子连珠。
(系统自带判定黑子决策是否为禁手,若为禁手则判对方胜)
5. 白子胜利条件:白子没有禁手限制,任意状态达成五子连珠即可。
工程文件说明:
1. /draw/graphic.py:GUI底层文件
2. /draw/table.py: 棋盘类
3. /draw/cmd.py: 打印输出类
4. /logic/control.py:选手动作管理
5. /logic/judge.py: 判定规则类
6. /player/easyai/easyai.py:弱智能ai,可与之一战
7. /player/chenna/chenna.py:复现之前作业中最好结果,但改成python版本后迭代耗时较长,有兴趣的可以看下。
8. main.py:顶层模式控制
(以上文件不建议进行大量修改,但可以适当读取所需数据)
(也不允许进行规则上的修改,最后判别规则使用原版规则)
(如果发现代码所给判定规则或其他地方有误,请及时与管理员联系)
工程输入、输出说明:
输入:即下子操作,格式为pos_x, pos_y,范围1 – 15(见control.py中的player_move方法)。
请注意table.py中move_chess方法中的x y轴说明,有助于您正确输出/读取坐标
输出:每一次下子,主目录下会产生chess_log.txt,以15x15矩阵形式表示当前棋盘状态,0代表无子,1代表白子,-1代表黑子。