C语言中的Gomoku数据表示
Gomoku datas representation in C
我正在制作一款Gomoku游戏,我目前已经完成了GUI等,我需要编写IA和规则检查器(用于可选规则,如捕获,禁止模式等)。我计划用int数组来表示board,例如:
uint goban[361];
表示一个19 * 19的棋盘。假设我们可以将一个32位整数分成4个字节,在每个字节中我们可以存储这样的元数据,例如:
- 第一个字节:this case Is empty/black/white ?
- 第二个字节:这是一个特殊模式的一部分吗?
- 第3个字节:我在模式的哪个位置?
- 第4个字节:我可以捕获吗?
我不知道这种解决方案是否适用于Gomoku AI,但我遇到的主要问题是如何正确地编写它。以pattern为例:
-OO-O-
这是一个开放的&自由三,它的内部和末端都有空间。我该如何将此模式与没有坐标的静态表示相关联?
另一个问题是我应该何时更新模式以及如何更新,因为在361个案例中,如果我将之前的图更新为这样,它可能会很长:
XOO-O-
我必须更新所有四种情况,所以我认为这是不合适的,加上它会影响许多其他垂直/对角线模式。
我是否应该像这样列出地图上当前的模式:
std::list<ThreatList> tlist;
并使映射成为一个简单的tribool或char数组?
我希望我的数据表示给我最大的信息,以获得影响图的快速更新,这将由我的评估函数填充。我读过一些关于威胁空间搜索和其他Gomoku算法的东西,但它们没有讨论数据表示,我不知道如何正确地做到这一点,你能帮我找到一种干净的方式来表示模式以及如何更新它们吗?
谢谢你。
看看这个开源的Gomoku:https://github.com/garretraziel/gomoku
我想你会发现里面有很多有趣的想法。
相关文章:
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如何解析表示树状数据结构的字符串
- C++ 表示 NIC 收到数据时没有收到任何内容
- 当接收到不明确的规范时,表示图的邻接列表的数据结构
- pybind11:用可选数据表示并集
- 在C++中将数据结构表示为字符串的首选方法是什么?
- 表示命令数据包格式的数据结构
- 表示图像矩阵的理想数据结构是什么?
- 由INT数据类型(低,高)结构表示的双数据类型
- 如何使用位表示访问可索引的数据结构
- 使用 uint8_t 或 char 来表示以字节排列的二进制数据更好吗?
- LIBSVM 训练数据格式(svm_node x 值表示 svm_problem)
- STL表示隐含交叉引用的数据结构的方法
- 数据C++的二进制表示显示的数据不正确
- 内存中一个像素图像数据的表示形式
- 用于在C++中表示 JSON 的数据类型
- 为概率分布的数据表示寻求建议
- 多个向量的数据表示
- 将c_string转换为字符串再转换回c_string时数据表示形式丢失
- C语言中的Gomoku数据表示