‘’‘还是迷宫,从左上到右下,不能斜着走,用@表示没有走过,用*表示障碍,用a表示走过,一次一格,然后存在随机障碍物’’’
import random from collections import deque def migong(m,n): dx=[1,0,-1,0] dy=[0,1,0,-1] v={(x,y): random.choice('@*') for x in range(0,m) for y in range(0,n)} v[(0,0)]="a" v[(m-1,n-1)]="@" print("===============原迷宫==========") for i in range(m): for j in range(n): print(v[(i, j)], end=" ") print() q=deque([(0,0,0)]) while len(q)>0: p=q.popleft() for i in range(4): x=p[0]+dx[i] y=p[1]+dy[i] if x<0 or y<0 or x>m-1 or y>n-1 or v[(x,y)] == 'a' or v[(x,y)]=="*": continue v[(x, y)] = 'a' q.append((x, y, p[2] + 1)) if x==m-1 and y==n-1: print("===============最终迷宫==========") for i in range(m): for j in range(n): print(v[(i, j)], end=" ") print() return p[2]+1 return -1 print(migong(20,20))迷宫随机生成,未必有路径
1、python 的==考察值 is考察id 2、障碍物目前看起来和边界一样,就是不记录,不往下,不继续的点,所以可以和边界相同的处理办法 3、迷宫的打印,没有写出pythonic的句子,4句总是太长 4、边界取值,依旧还是容易错,还是不习惯数0,更喜欢数1 5、random的问题,生成随机数,挑字符用choice,生成多个元素用sample(返回值是含有多个元素的列表)再拼接一下???无中生有??或者是下个单词的csv,然后pd,然后再choice
1、迷宫打印pythonic化 2、其实坐标只是个坐标,没有参考量就没有意义,所以到底是从上到下还是从下到上,其实好像是一个意思。只是我打印的时候用00做第一行第一列的起始而已。【??????】 3、迷宫通过率太低,怎么确保生成确定能通过的迷宫?
