所以,我正在考虑制作一个简单的随机世界生成器。该生成器将创建一个起始“单元格”,该“单元格”将具有一到四个随机导出(在主要方向上,类似于迷宫)。在决定这些导出后,我会在每个导出处生成一个新的随机“单元格”,并在玩家接近尚未生成的世界部分时重复。这个概念将允许一个“无限”的世界,所有的世界都是随机生成的;但是,我不确定如何在内部最好地表示这一点。
我正在使用 C++(这并不重要,我可以实现任何类型的必要数据结构)。起初我想到了使用一种有向图,其中每个节点都有指向它周围每个单元格的边,但是如果用户在世界上找到一个点,回溯并返回到那个点,这可能不会很好地工作从另一个方向看。世界可能会做一些奇怪的事情,例如在一个位置生成两个细胞。
关于哪种数据结构可能对这种情况最有效有什么想法吗?还是我对我的随机世界生成做了一些非常愚蠢的事情?
如有任何帮助,我们将不胜感激。 谢谢, 克里斯
最佳答案
我建议您阅读有关图表的内容。这正是随机图生成的一个应用。您描述的不是“cell”和“exit”,而是“node”和“edge”。
此外,您还可以进行最短路径分析、循环检测和各种其他有用的图论应用。
This将帮助您了解节点和边缘:
和here是这些概念的最终应用。我以面向对象的方式实现了这一点——每个节点都知道它与其他节点的边。一个流行的替代方法是使用 adjacency list 来实现它.我认为邻接表的概念基本上就是 user470379 在他的回答中所描述的。然而,他的 map 解决方案允许无限图,而传统的邻接表则不允许。我喜欢图论,这是它的完美应用。
祝你好运!
-Brian J. Stianr-
关于c++ - 随机世界的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999120/