【TypeScript】壁のない迷路を生成する

迷路の幅と高さをそれぞれ width, height として設定し、
その数値にしたがって壁のない迷路を生成する。
※迷路の幅と高さは5以上の奇数とする。

class Maze {
  PATH: number;
  WALL: number;
  width: number;
  height: number;
  maze: any[] = [];

  constructor(width: number, height: number) {
    this.PATH = 0;
    this.WALL = 1;
    this.width = width;
    this.height = height;
    if (this.width < 5 || this.height < 5) {
      return;
    }
    if (this.width % 2 == 0) {
      this.width++;
    }
    if (this.height % 2 == 0) {
      this.height++;
    }
    this.maze = Array.from(new Array<number>(this.height), () =>
      new Array(this.width).fill(this.PATH)
    );
  }

  print_maze() {
    for (let col of this.maze) {
      let arr = "";
      for (let cell of col) {
        if (cell == this.WALL) {
          arr += "#";
        } else if (cell == this.PATH) {
          arr += " ";
        }
      }
      console.log(arr);
    }
  }
}

let maze1 = new Maze(15, 15);
maze1.print_maze();
for (let col of maze1.maze) {
  let arr = "";
  for (let cell of col) {
    arr += cell;
  }
  console.log(arr);
}
console.log(maze1.maze.length, maze1.maze[0].length);

今回は、以下のように出力される。
















000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
15 15

コメント

タイトルとURLをコピーしました