回去(想想20多年),我在我为计算机输入的杂志中遇到了Gomoku游戏源代码,并玩得很开心。

游戏很难赢得比赛,但是计算机AI的核心算法确实很简单,而且没有考虑很多代码。我想知道是否有人知道这种算法,并且与某些来源或理论有一些链接。

我记得的事情是,它基本上分配了一个覆盖整个板的阵列。然后,每当我或它放置一块时,它都会为板上的所有位置增加许多权重,这些位置可能会影响。

例如(请注意,权重肯定是错误的,因为我不记得那些):

1   1   1
 2  2  2
  3 3 3
   444
1234X4321
  3 3 3
 2  2  2
1   1   1

然后,它只是将数组扫描到最低或最高值的开放位置。

我很模糊的事情:

  • 也许它有两个阵列,一个适合我,一个为自己,有一个分钟/最大的加权?
  • 算法可能还有更多,但从根本上讲,它基本上是一个数组和加权数字

这根本与任何人敲响铃铛吗?有人得到任何有帮助的人吗?

有帮助吗?

解决方案

阅读您的描述,并对此进行思考,我认为它可能与您描述的方式完全合作。

要实现获得五英寸排的目标,您必须(a)防止对手成功,并且(b)成功。

要成功自己,您必须将石头放在板上已经拥有的其他石头附近,因此在可能连续参与的石头旁边增加田野的积极分数是有意义的。您给出的线性示例要么是二次的示例,也许可以很好地工作。

为了防止对手成功,您必须将石头放在旁边 他的 / 石头。如果您用一块石头击中两只鸟,这是特别好的,因此对手的石头应该像您相同的方式增加周围田地的价值 - 他已经排队的石头越多,得分就越高,并且越有可能算法将尝试切断对手。

这里最重要的是,不同田地的加权,以及对手的石头是否与您的石头加权不同。不幸的是,我无能为力,但是一旦编写游戏本身,这些值应该可以通过反复试验来合理地弄清楚。

但是,这是一种非常基本的方法,并且用树搜索算法表现出色。搜索Google,有一个相关的 威胁搜索的论文, ,显然对Gomoku效果很好。纸是付费墙的背后:/

其他提示

我还没有阅读文章,但是从描述中,我的猜测将是某种形式 minimax算法

我看到了您提到的这种算法 - 它非常简单又快速(没有回溯:-)),而且效果很好:-)我必须在某个地方有源取决于其他石头的数量以及Oponent石头的重量。这些算法较低,因此更喜欢攻击策略。

但这当然是非常微不足道的算法。已经找到了获胜策略。请参阅本文: L. Victor Allis,HJ Van Den Herik,MPH Huntjens。 go-moku和威胁空间搜索. 。当我编写自己的程序时,这对我有很大帮助。这样,您就可以编写程序,这在攻击对手并找到获胜组合方面非常出色。

这是一个古老的游戏 - 我在 行星源代码. 。我在大学期间玩了这款游戏,在286天内有了它的基本版本。

这是您要寻找的程序ftp://ftp.mrynet.com/usenix/80.1/boulder/dpw/gomoku.c

它已经快40岁了

在iPhone开源版本上工作。

如果有兴趣加入,请打我!

https://github.com/kigster/kigomoku

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top