人机对战——填子游戏的攻防策略
问题:在18×18方阵中轮流在空白处放置黑白棋子,直到有一方形成横、竖、斜方向五连星获胜。
参考:填子游戏
把程序改成人机对战还是有些意思的。
主要思路:
1、人用鼠标点击落子,下棋策略靠人。
2、机器的策略是:扫描各点(空格),按防守和进攻分别给出分值,选择分值高的一方落子,但前14手,无条件进行防守,这是基于多次测试后采取的一个策略,能够使得获胜率得到大幅提升。
3、如果分值达到或超过5分,即刻判决某一方获胜或无条件防守;然后分为连成无障碍的4子、连成有障碍的4子和无障碍的3子、连成两个无障碍的3子、连成一个无障碍的3子、连成二个无障碍的2子、连成一个无障碍的2子、其他等七种情况,分别设置分值4.5、4.3、3.3、3、2.2、2、1。
4、所谓无障碍,是指连子两端的空格数之和不少于3个或4个,并且每端的空格数不少于1个。
程序完整清单如下:
from tkinter