当前位置: 首页 > news >正文

图书馆网站建设的建议建设厅网站实名制系统如何解聘

图书馆网站建设的建议,建设厅网站实名制系统如何解聘,网站建设实验报告格式,兰州做网站哪家专业学习路径计算之前需要一个场景#xff0c;网上查了下迷宫生成方法花了点时间写了个简单的迷宫生成器 基本原理十分简单#xff1a; 使用2维矩阵表示迷宫#xff0c;每一个节点有四面墙#xff0c;使用深度搜索#xff0c;随机顺序向四个方向移动,#xff0c;如果遇到已到…学习路径计算之前需要一个场景网上查了下迷宫生成方法花了点时间写了个简单的迷宫生成器 基本原理十分简单 使用2维矩阵表示迷宫每一个节点有四面墙使用深度搜索随机顺序向四个方向移动,如果遇到已到节点则停止该方向没有走过则把两个节点之间的墙消除掉。这样可以保证每一个节点都可以覆盖到而且每一个节点都会有一条路通向出口。 简单的算法有一个很明显的缺点每一个节点只有一条固定的路不会有多条路通向某个节点。 深度搜索使用递归十分简洁不赘述。 具体实现比较容易受坑的地方是如何简洁实现上下左右随机移动消除墙壁并且不用一千个if 首先是方向表示这里使用了一个列表 directions [[0,-1],[1,0],[0,1],[-1,0]] 分别表示上右下左 对[0,1,2,3]使用random.shuffle()函数然后对这个列表进行遍历可以实现随机获取上下左右矢量 每一个节点有四面墙壁使用[0,0,0,0]表达序列方向与上面direction相同。 在消除一个节点之间的墙壁的时候需要消除上一个墙壁对立面的节点 还是对方向进行操作direction[i]表达了方向矢量在这里加号是右移右移一位的时候是顺时针旋转45度向左移1位则是旋转逆时针45度 数字i右移2位并投影到0-3上则可以实现方向对调。 简单来说就是进行右移并除余 每次搜索的时候如果遇到之前已访问节点则退出函数函数中记录已覆盖节点如果达到节点总数则直接退出 运行效果如下 可以看到递归深度优先的算法的特点在一条路走到最后之后会返回到上一个节点 import pygame as pg import time import randomclass Tile():def __init__(self,grid_size,screen_size,x,y): #主要是储存数据和绘制图形与算法无关self.x,self.y x,yself.connected [0,0,0,0] # up,right,down,left 0 for not connectedself.grid_size grid_sizeself.tile_size [(screen_size[0]-100)/grid_size[0],(screen_size[1]-100)/grid_size[1]]self.rectangle (self.x*self.tile_size[0]50,self.y*self.tile_size[1]50,self.tile_size[0],self.tile_size[1])self.points [ [self.x*self.tile_size[0]50,self.y*self.tile_size[1]50], #uppper left[self.x*self.tile_size[0]50self.tile_size[0],self.y*self.tile_size[1]50], #upper right[self.x*self.tile_size[0]50self.tile_size[0],self.y*self.tile_size[1]50self.tile_size[1]], #lower right[self.x*self.tile_size[0]50,self.y*self.tile_size[1]50self.tile_size[1]], #lower left] self.visited Falsedef draw(self,color (255,253,150)): #x,y represents the tile coordinates pg.draw.rect(screen,color,self.rectangle) #绘制节点for i in range(4): #绘制四面墙壁if not self.connected[i]:pg.draw.line(screen,(150,175,255),(self.points[i]),(self.points[((i1)%4)]),5)def maze_gen(path):global tile_covered #覆盖节点数量当覆盖节点数量到达网格数量则停止x,y path[-1]if x 0 or x grid_size[0] or y 0 or y grid_size[1]: #超出网格范围则退出print(findex out of range at {x,y})returnmatrix[y][x].draw()if matrix[y][x].visited: #已访问节点则退出print(fnode already visited at {x,y})returnelif tile_covered grid_size[0]*grid_size[1]: #覆盖节点数量未到达网格总数量tile_covered 1matrix[y][x].visited Truepath_choice [0,1,2,3]random.shuffle(path_choice)directions [[0,-1],[1,0],[0,1],[-1,0]] # up,right,down,left 0 for not connectedfor i in path_choice:x_,y_ xdirections[i][0],ydirections[i][1]path.append([x_,y_])if maze_gen(path):matrix[y][x].connected[i] 1 #walls of current nodematrix[y_][x_].connected[(i2)%4] 1#reverse the vector directionmatrix[y][x].draw()matrix[y_][x_].draw()path.pop(-1)pg.display.update()return Trueelse:print(all node visited)returnscreen_size [800,800] grid_size [40,40] exit [10,10] tile_covered 0 run Truescreen pg.display.set_mode(screen_size)matrix [] for y in range(grid_size[1]): #创建二维矩阵x,y代表坐标temp []for x in range(grid_size[0]):tile Tile(grid_size,screen_size,x,y)temp.append(tile)matrix.append(temp)pg.init() path [[0,0]]screen.fill((255,255,255)) maze_gen(path)pg.display.update()print( Generation Finished ) while run: #生称完毕之后不退出使用循环for event in pg.event.get():if event.type pg.QUIT:time.sleep(0.1)pg.quit()exit()
http://wiki.neutronadmin.com/news/344805/

相关文章:

  • 来宾住房与城乡建设网站outlook WordPress设置
  • 网站自身维护珠海市企业网站制作服务机构
  • 网站开发大作业网站备案 加急
  • 万网一个ip建立多个网站prizm viewer wordpress
  • 宁波网站建设推荐荣盛网络好网站建设职业规划
  • 网站开发招投标书网站开发课程介绍
  • 查询域名官网的是那个网站吗seo全网营销的方式
  • 微信学校网站模板做面膜的网站
  • 网站焦点图制作教程php网站模板
  • 蓟县集团网站建设龙岩市住房和城乡建设厅网站
  • 茅台镇哪一家网站做的好南宫建设局网站首页
  • 模板建站哪个平台好经典网站代码
  • wordpress回收站在哪里泰安搭建公司
  • 西安+美院+网站建设资料软件
  • 雍鑫建设集团网站设计素材网站花瓣
  • 安阳网站制作中国建设有限公司官网
  • 那个网站有帮人做图的h5简单网页代码
  • 建设一个视频网站己18网站建设网站排名
  • 辽宁朝阳网站建设公司惠州哪家做网站好
  • 顺德新网站制作网站建设 技术方案
  • 小企业网站建设怎么做好服装网站建设公司
  • 用flask做的网站有哪些怎么自己开发一个app软件
  • 合肥网站建设方案咨询萤火虫网站建设优化
  • 科站网站商业网站的建设与维护
  • 网站建设 中关村凡科网登录下载
  • 锦州网站建设多少钱百度收录网站标题
  • 工信部网站备案查询电商网站 知名案例
  • 做网站的叫什么软件大都会app下载二维码
  • 做问卷调查用哪个网站好服务器出租网站模板
  • 南县网站开发设计师找灵感的网站