使用DFS生成迷宫。
using System;
using System.Threading;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace GameApplication {
class Map {
private char shapeBegin = '*', shapeEnd = '!';
private int size, unit;
private (int x, int y)[] move = new (int x, int y)[] {(-1, 0), (1, 0), (0, -1), (0, 1)};
private char[,] canvas;
private bool[,] visited;
// public:
public void DrawGameActor((int x, int y) position, char ch) {
canvas[position.x, position.y] = ch;
return;
}
public bool Passable((int x, int y) U) {
return canvas[U.x, U.y] == ' ' || canvas[U.x, U.y] == shapeEnd;
}
public int Unit() {
return unit;
}
public int Size() {
return size;
}
public char ShapeEnd() {
return shapeEnd;
}
public bool SetMapUnit(String str) {
if (Regex.IsMatch(str, "\\A[0-9]+\\Z")) {
unit = Convert.ToInt32(str);
if (unit <= 1)
return false;
else
return true;
}
else
return false;
}
public void Generate() {
InitMap();
(int x, int y) U = (0, 0);
visited[U.x, U.y] = true;
canvas[1, 1] = ' ';
DFS(U, 1);
return;
}
public void Print() {
for (int i = 0; i < size; i++) {
for (in