Esempio n. 1
0
func main() {
	var (
		grid maze.Grid
		al   alg.Algorithm
	)

	// choose grid type
	if dijkstra {
		grid = maze.NewDistanceGrid(row, col)
	} else {
		grid = maze.NewNormalGrid(row, col)
	}

	// choose algorithm to use
	switch flag.Arg(0) {
	case "binarytree":
		al = alg.NewBinaryTree()
	case "sidewinder":
		al = alg.NewSidewinder()
	case "recursivebacktracker":
		al = alg.NewRecursiveBacktracker(grid.Random())
	default:
		panic("unknown algorithm")
	}

	// generate a maze by al
	al.On(grid)
	fmt.Println(grid.String())
	fmt.Printf("%d dead-ends\n", len(grid.DeadEnds()))

	// braid
	grid.Braid(braid)

	if dijkstra {
		start := grid.Get(0, 0)
		grid.(*maze.DistanceGrid).Distances = start.Distances()
	}

	fmt.Println(grid.String())
	fmt.Printf("%d dead-ends\n", len(grid.DeadEnds()))
}