1

我正在开发基于图块的 2D 游戏,并且地图生成存在小问题。

一般概念是它默认创建一个房间,然后在任何现有房间的基础上构建,直到构建了 X 个房间或 Y 次尝试失败。

我遇到的问题可能很简单,我只是想不通,但是我将如何去除带圆圈的瓷砖?生成的每张地图都是程序性的,所以我不知道什么时候会出现像圆圈那样的点,我可以很容易地用我的眼睛发现它们……我只是想不出一种在地图之后处理它们的包罗万象的方法已经生成。

目标是永远不要在不需要的地方加倍墙壁。我不想改变地图的生成方式,而是在事后修改它。我也不想失去房间或类似的角落。

我真的觉得我正在尝试做的事情会在图像编辑或类似领域有一个名字,但这肯定不是我的强项。

描述的图像

4

2 回答 2

1

您圈出的物品是模棱两可的,因为在某些情况下,您可以在不违反规则的情况下移除您或另一边圈出的物品(没有混合室,也不向外部黑色瓷砖开放)。

无论如何,我应该多考虑一下,但它们似乎只是被移除后没有加入两个房间的瓷砖,也没有任何相邻的(包括对角线)黑色瓷砖。

我想您可以为每个房间分配一个编号,然后删除任何瓷砖:

  • 不连接两个不同编号的地砖
  • 没有相邻的黑色块

也许你也可以在不给房间编号的情况下做到这一点,但你必须通过利用边邻接来了解所有邻居是否来自同一个房间。

于 2012-09-20T03:42:01.170 回答
1

如果可以的话,我会发表评论而不是回答,因为我不能,我会给出答案。

你如何存储关卡的细节?您似乎想知道两个水平或两个垂直墙壁在哪里接触并删除它们,只要它们不是角落。

看来您需要一两条规则,例如...

如果它是水平墙并且两边都有瓷砖,请删除上面或下面的任何内容。

如果是竖墙并且上下有瓷砖,则删除左边或右边的任何一个

于 2012-09-20T15:05:13.620 回答