C中的Gomoku数据表示

时间:2013-01-14 20:53:11

标签: c++ artificial-intelligence evaluation data-representation gomoku

我正在开发Gomoku游戏,我目前正在使用GUI等,我需要编写IA和规则检查器代码(用于可选规则,如Capture,禁止模式等)。 我打算用一个int数组代表董事会:

uint goban[361];

这将代表19 * 19 Goban(董事会)。假设我们可以在4字节中拆分一个32位整数,并且在每个字节内我们可以存储这样的元数据,例如:

  • 第一个字节:这种情况是空/黑/白?
  • 第二个字节:这个案例是特殊模式的一部分吗?
  • 第3个字节:模式在哪个位置?
  • 第4个字节:我可以捕捉吗?

我不知道这种解决方案是否适合Gomoku AI,但主要问题是我如何正确编写它。我们采取模式:

 -OO-O-

这是一个开放的&自由三,它有内部空间和四肢。我应该如何将此模式与没有坐标的静态表示相关联?

另一个值得关注的问题是我何时应该更新模式以及如何更新模式,因为在361的情况下,如果我将上一个数字更新为此内容可能会很长:

 XOO-O-

我要更新所有四个案例,所以我认为它不合适,而且它会影响许多其他垂直/对角线模式。

我是否应该在地图上列出当前模式列表:

std::list<ThreatList> tlist;

并使地图成为简单的tribool或char数组?

我希望我的数据表示能够为我提供最大的信息,以便快速更新影响图,这将由我的评估函数填充。我已经阅读了关于威胁空间搜索和其他Gomoku算法的几件事,但他们没有谈论数据表示,我不知道如何正确地做到这一点,你能帮我找到一种清晰的方式来表示模式以及如何更新它们。

谢谢你。

1 个答案:

答案 0 :(得分:0)

看看这个开源Gomoku: https://github.com/garretraziel/gomoku

我想你会在那里找到很多有趣的想法。

相关问题