迷路の幅と高さをそれぞれ width, height として設定し、
その数値にしたがって壁のない迷路を生成する。
※迷路の幅と高さは5以上の奇数とする。
class Maze {
PATH: number;
WALL: number;
width: number;
height: number;
maze: number[][] = [];
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(this.height)].map(() => Array(this.width).fill(0));
}
print_maze(): void {
let arr: string;
for (let row of this.maze) {
arr = '';
for (let cell of row) {
if (cell === this.WALL) {
arr += '#';
} else if (cell === this.PATH) {
arr += ' ';
}
}
console.log(arr);
}
}
}
const maze1 = new Maze(15, 15);
maze1.print_maze();
let arr: string;
for (let row of maze1.maze) {
arr = '';
for (let cell of row) {
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