无限棋盘井字游戏的最佳数据结构



假设我正在设计一个在无限棋盘上玩的井字游戏。在水平、垂直或对角线上成功放置三个标记的玩家获胜。表示它的最佳数据结构是什么?我只能想到哈希表来记录位置。对于每个新位置,检查其周围环境以评估是否获胜。

还有其他更好的主意吗?

尽管你有一个无限的棋盘,但你仍然应该为你的游戏分配坐标。坐标可以是从0到一个很大的数字。

现在,你有一个实际上无限的坐标。为什么不制作一个简单的坐标字典呢?C++:

std::map<std::pair<long, long>, MySquare> m;

例如,如果您在(460670(上,则要检查(461671(。只需检查(461671(是否在m中,如果不在,则添加一个新条目。

这个非常简单的设计是稳健的,因为它只在你真正需要的时候分配内存

不要把自己搞得过于复杂。

最新更新