def _generate(self, w, h, complex): ''' 产生一个特定的迷宫 :param w: int 迷宫宽度 :param h: int 迷宫高度 :param complex: float 算法复杂度,与搜索复杂度不同 :return: Maze 迷宫对象 ''' m = Maze() m.generator = CellularAutomaton(w, h, complex, default_density) m.generate() m.solver = BacktrackingSolver() #m.start = (1, 1) #m.end = (w, h) m.generate_entrances() m.solve() return m
def generate_maps(tag: str, dest: str, count: int, xsize: int, ysize: int): for i in range(count): # Initialise ith maze. m = Maze(i) # Set up generator and generate. # CellularAutomaton is used as it often gives multiple # possible solutions for larger map sizes. m.generator = CellularAutomaton(xsize, ysize) m.generate() m.generate_entrances(False, False) with open(path_join(dest, f"{tag}.{i}.unsolved.map"), "w") as f: f.write(str(m)) m.solver = ShortestPath() m.solve() with open(path_join(dest, f"{tag}.{i}.solved.map"), "w") as f: f.write(str(m))
[ 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ], [ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]] m.grid = np.array(miz) m.start = (0, 13) m.end = (24, 19) m.solve() sol = m.solutions[0] for i in range(len(sol) - 1): x = sol[i][0] y = sol[i][1] xn = sol[i + 1][0] yn = sol[i + 1][1] #print(f"x -> {x} y- >{y} xn -> {xn} yn -> {yn}") if (x - xn) > 0: print("j", end="") elif (y - yn) > 0: print("h", end="") elif (yn - y) > 0: print("l", end="") elif (xn - x) > 0: