首先,你需要一些位置感。不同的对象占据一定的坐标空间。在
你得决定这些东西有多规律。在一般情况下,您可以将它们作为简单矩形(或矩形实体)放入坐标空间,以使位置规划更简单。在
如果事情是不规则的和密集的,生活就有点复杂。在
定义包含位置的地图。每个位置都有一系列的坐标;如果使用简单的矩形,则每个位置都可以有一个(左、上、右、下)元组。在
你的地图需要一些方法来确定谁居住在一个给定的空间中,以及什么与空间相邻,等等
然后,您可以使用一组固定的位置对其进行单元测试,这些位置都可以放入地图中,并通过一些基本的健全性检查,以确定是否存在冲突、相邻等等。在
其次,你需要一种“迷宫发生器”。一个简单连接的迷宫很容易形成树结构,折叠成给定的空间。在
迷宫/树有一个“根”节点,它将是迷宫的中心。不一定是你空间的物理中心,但根节点将是迷宫结构的中间。在
理想情况下,这个节点的一个分支包含一个通向整个空间的“入口”。在
此节点的另一个分支包含整个空间的一个“出口”。在
有人可以从入口到出口徘徊,沿途参观很多“死胡同”。在
为根节点选择一种空间。把它放到你的地图空间里。在
这将有1-n入口,每个入口都是一个子树,具有根节点和1-n入口。正是这种多入口的生意使得一棵树自然适合这种结构。另外,一棵合适的树总是连接得很好,因为你从来没有孤立的部分是不能到达的。在
您将递归地从根节点扇出,选择位置并将它们放入可用空间。在
对其进行单元测试,以确保它能合理地填充空间。在
其余的需求是对迷宫生成器选择位置的方式进行微调。在
最简单的方法是有一个权重表和随机选择。选择一个随机数,将其与权重进行比较,以确定哪种位置。在
你对空间的定义可以是二维或三维,两者都很合理。对于奖励积分,请考虑如何实现一个用六边形而不是正方形平铺的二维空间。在
这个“几何体”可以是各种算法的一个策略插件。如果你能用六边形的2D代替正方形的2D,那么你已经很好地完成了OO设计。在