如何在java中生成随机迷宫?

如何在java中生成随机迷宫?,java,random,maze,Java,Random,Maze,好的,我想为我的迷宫游戏生成一个随机的迷宫。 我已经像这样硬编码了迷宫,并且有几个不同的版本,我希望能够随机生成 public Maze() { this.mazeMap1 = new BlockType[][] { {H, H, H, H, H, H, H, H, H, H, H, H, H, H, H}, {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},

好的,我想为我的迷宫游戏生成一个随机的迷宫。 我已经像这样硬编码了迷宫,并且有几个不同的版本,我希望能够随机生成

public Maze() {
        this.mazeMap1 = new BlockType[][] {
                {H, H, H, H, H, H, H, H, H, H, H, H, H, H, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, H, E, E, H, E, E, H, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, H, E, E, H, E, E, H, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, H, E, E, H, E, E, H, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, H, E, E, H, E, E, H, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, E, E, E, E, E, E, E, E, E, E, E, E, E, H},
            {H, H, H, H, H, H, H, H, H, H, H, H, H, H, H}
            };
}
然后我创建一个getter并返回迷宫

public BlockType[][] getMazeMap() {
return mazeMap2;
}
然后我有一个班级的“黑板”,在那里我制作迷宫

 private void makeBoard() {
        blocks = new Maze().getMazeMap();
    }
如果我有,比如说10个不同的硬编码迷宫,我如何随机生成一个

您需要一组迷宫地图。拥有mazemap1、mazemap2等并不容易让你选择一个

ArrayList<Block[][]> mazemaps = new ArrayList<>();

mazemaps.add( new BlockType[][] { ... } ); // with all your data
mazemaps.add( new BlockType[][] { ... } ); // second map data
还有很多事情你可以做得更好,但这只是一个开始,你需要一个迷宫地图的集合。拥有mazemap1、mazemap2等并不容易让你选择一个

ArrayList<Block[][]> mazemaps = new ArrayList<>();

mazemaps.add( new BlockType[][] { ... } ); // with all your data
mazemaps.add( new BlockType[][] { ... } ); // second map data
还有很多事情你可以做得更好,但这是一个开始

以下是我的看法:

首先需要生成退出方式。所谓退出方式,我指的是从开始到结束的方式

然后:

制造一条没有出路的错误道路 生成围绕假路径的墙 返回到步骤1 将每个单元生成为墙或可通行地形后,运行Djikstra/A*算法并证明迷宫实际上是可解的。

以下是我的观点:

首先需要生成退出方式。所谓退出方式,我指的是从开始到结束的方式

然后:

制造一条没有出路的错误道路 生成围绕假路径的墙 返回到步骤1
将每个单元生成为墙或可通行地形后,运行Djikstra/A*算法并证明迷宫实际上是可解的。

将10个不同的迷宫放入一个数组中,并随机选择其中一个数组元素。实际上,随机生成迷宫要有趣得多,而不是选择一个预先存在的迷宫。建议:与其对迷宫进行硬编码,不如编写一个简单的实用程序,将黑白二值图像作为输入,并将每个像素转换为黑色->H',白色->E块类型。通过这种方式,您可以使用任何图像编辑器创建新的迷宫,或者将10个不同的迷宫放入一个数组中,然后随机选择其中一个数组元素。实际上,随机生成迷宫要有趣得多,而不是选择一个预先存在的迷宫。建议:与其对迷宫进行硬编码,不如编写一个简单的实用程序,将黑白二值图像作为输入,并将每个像素转换为黑色->H',白色->E块类型。通过这种方式,您可以使用任何图像编辑器创建新的迷宫