一段时间以来,我一直在尝试为同一个程序创建算法。
你当然是正确的,你的程序应该做的第一件事就是检查是否有办法形成 5 并获胜。如果没有,接下来应该检查你的对手是否可以做到,如果可以,然后防守。
你自己玩过多少五子棋?怎么掌握好你的基础知识?
好的,下一步是思考:我们如何才能到达我们可以获胜的位置?显然,要赢,我们必须连续四场比赛。但是我们只是像这样连续形成四个:
__________
____XOOOO_
__________
然后对手可以关闭它。
但是如果我们形成“开四”,像这样:
__________
____OOOO__
__________
然后对手不能关闭双方,你可以赢。因此,形成开放式四人组是获胜的一种方式。现在来了一个问题:我们如何形成一个开放的四?当然,如果我们形成“开三”,像这样:
__________
____OOO___
__________
然后对手可以阻止我们:
___________
____XOOO___
___________
我们又回到了起点。
要赢,我们可以同时形成两个空位三分:
____________
____OOO_____
_____O______
____O_______
现在如果对手阻挡其中一个,我们可以使用另一个形成一个开放的四:
____________
_______O____
___XOOO_____
_____O______
____O_______
____________
并赢得:
________O___
_______O____
___XOOO_____
_____O______
____O_______
___X________
用 gomoku 术语来说,这称为 3x3,如果你同时投进两个空位三分球。
请注意,两者都必须打开:您能理解为什么吗?
还有其他获胜方式:
4x3:你看到获胜的举动了吗?为什么获胜?
____________
__XOOO______
__XXXO______
____OX______
____________
4x4:看到制胜法宝了吗?
____________
__XOOO______
__XXXO______
__OXOX______
___O________
__X_________
这些只是游戏的基础。了解策略可以帮助您思考如何构建 AI,因此您可以对原则进行硬编码。
当然,这只是开始。如果您能尝试实现这一点,然后向我提供反馈,我将不胜感激。
我一直在尝试用 Java 编写程序。你想看看我做的代码,这样你就可以玩测试了吗?它还不是很好,但你可以从那里得到新的想法。虽然注释和变量名是用爱沙尼亚语写的.. 可能很难理解。:(