我正在开发Gomoku游戏,我目前正在使用GUI等,我需要编写IA和规则检查器代码(用于可选规则,如Capture,禁止模式等)。 我打算用一个int数组代表董事会:
uint goban[361];
这将代表19 * 19 Goban(董事会)。假设我们可以在4字节中拆分一个32位整数,并且在每个字节内我们可以存储这样的元数据,例如:
我不知道这种解决方案是否适合Gomoku AI,但主要问题是我如何正确编写它。我们采取模式:
-OO-O-
这是一个开放的&自由三,它有内部空间和四肢。我应该如何将此模式与没有坐标的静态表示相关联?
另一个值得关注的问题是我何时应该更新模式以及如何更新模式,因为在361的情况下,如果我将上一个数字更新为此内容可能会很长:
XOO-O-
我要更新所有四个案例,所以我认为它不合适,而且它会影响许多其他垂直/对角线模式。
我是否应该在地图上列出当前模式列表:
std::list<ThreatList> tlist;
并使地图成为简单的tribool或char数组?
我希望我的数据表示能够为我提供最大的信息,以便快速更新影响图,这将由我的评估函数填充。我已经阅读了关于威胁空间搜索和其他Gomoku算法的几件事,但他们没有谈论数据表示,我不知道如何正确地做到这一点,你能帮我找到一种清晰的方式来表示模式以及如何更新它们。
谢谢你。