我可以使用哪些特定工具来创建迷宫的2D数组?

时间:2016-04-28 19:41:11

标签: java

我获得了一个创建带有2D数组的迷宫的任务。 我被告知我需要实现Union-Find算法来生成任意大小的迷宫。然后我需要打破每一面墙,直到每个细胞都可以到达每个细胞。

int[][] matrix = new int[N][M];

单元格是单独的数组索引,但是墙是什么?我正在考虑使用4个方向的构造函数制作我自己的数据类型的迷宫,例如

Maze maze = new Maze() //fill in constructor as needed

数组值是0-9,我可以用什么来表示墙?

2 个答案:

答案 0 :(得分:0)

使用ASCII艺术。你可以使用'|'用于垂直墙壁,“ - ”用于水平墙壁。它是基本的,但是一旦你可以确保它的工作原理,你就可以继续使用更加赏心悦目的图形。重要的是首先确保它在功能完善之前发挥作用。

答案 1 :(得分:0)

我建议你创建两个类,一个用于整个迷宫,另一个用于代表迷宫中坐标的Cell。如果Coordinate实际上是一个墙,请使用简单的bool值。对于您的算法,可以查看https://en.wikipedia.org/wiki/Maze_generation_algorithm

也许这个片段可以让你开始:

public class Maze {
        private int X_dim, Y_dim; // the dimension of your maze
        private Cell[][] cells; // 2d array of Cells

        public Maze(int X_dim, int Y_dim) {
            this.X_dim = X_dim;
            this.Y_dim = Y_dim;
        }
    }

    public class Cell {
        private Point coordinate;
        boolean visited = false;
        // if true, this Cell represents a wall
        boolean wall = true;

        Cell(Point coordinate, boolean isWall) {
            this.coordinate = coordinate;
            this.wall = isWall;
        }
    }