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

标签 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},
            {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;
}

然后我有一个类'Board',我在那里制作迷宫

 private void makeBoard() {
        blocks = new Maze().getMazeMap();
    }

如果我有 10 个不同的硬编码迷宫,我将如何随机生成一个?

最佳答案

您需要迷宫 map 的集合。拥有 mazemap1、mazemap2 等并不能(轻松地)让您选择一个。

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

mazemaps.add( new BlockType[][] { ... } ); // with all your data
mazemaps.add( new BlockType[][] { ... } ); // second map data

然后你可以选择一个:

int maze = new Random().nextInt(mazemaps.size());
return mazemaps.get(maze);

(还有很多其他事情你可以做得更好,但这是一个开始)

关于java - 我如何在 Java 中生成随机迷宫?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42997035/

相关文章:

python - 如何 "stash"随机状态生成器状态

c++ - 如何确保迷宫始终具有有效路径 C++

c++ - BFS 迷宫帮助 C++

java - ORA-00904 : "pass": invalid identifier

java - Java 中接口(interface)引用的对象的新实例

java - 在 GridBagLayout 中展开 JTextArea

java - 如何使用 Git 使 Beyond Compare 在 Eclipse 中工作?

c++ - 在 C++ 中使用随机数生成器作为函数的意外值

random - 我可以在Clojure中进行确定性的随机播放吗?

c++ - C++迷宫的DFS最短路径