之前学习不想交集合(并查集)的数据结构,看了很多大老用窗体画出随机迷宫,感觉挺震撼的,下心学习了一下。
这个过程想着不太复杂,就是做起来挺麻烦,需要自己一点点处理。大概步骤如下
1:定义好不想交集合的基本类和方法(search,union等)
2:数组初始化,每一个数组元素都是一个集合,值为-1
3:随机查找一个格子(一维数据要转换成二维,有点麻烦),在随机找一面墙(也就是找这个格子的上下左右),还要判断找的格子出没出界。
4:判断两个格子是否在一个集合。如果在,则重新找,如果不在,那么把墙挖去
5:把墙挖去有点繁琐,需要考虑奇偶判断它那种墙,然后擦掉。(根据数组转换成真实距离)
6:最终得到一个完整的迷宫。
js的代码如下:

<!DOCTYPE html>
<html><head><title>MyHtml.html</title>  </head> <body><canvas id="mycanvas" width="600px" height="600px"></canvas></body><script type="text/javascript">var aa=14;var chess = document.getElementById("mycanvas");var context = chess.getContext('2d');//  var context2 = chess.getContext('2d');//      context.strokeStyle = 'yellow';var tree = [];//存放是否联通var isling=[];//判断是否相连for(var i=0;i<aa;i  ){tree[i]=[];for(var j=0;j<aa;j  ){tree[i][j]=-1;//初始值为0}}  for(var i=0;i<aa*aa;i  ){isling[i]=[];for(var j=0;j<aa*aa;j  ){isling[i][j]=-1;//初始值为0}}function drawChessBoard(){//绘画for(var i=0;i<aa 1;i  ){context.strokeStyle='gray';//可选区域context.moveTo(15 i*30,15);//垂直方向画15根线,相距30px;context.lineTo(15 i*30,15 30*aa);context.stroke();context.moveTo(15,15 i*30);//水平方向画15根线,相距30px;棋盘为14*14;context.lineTo(15 30*aa,15 i*30);context.stroke();}}drawChessBoard();//绘制棋盘//      var mymap=new Array(36);//      for(var i=0;i<36;i  )//     {mymap[i]=-1;}function getnei(a)//获得邻居号  random{var x=parseInt(a/aa);//要精确成整数var y=a

canvas并查集画随机迷宫相关推荐

  1. 并查集——小希的迷宫

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=1272 思路: 结构为只有一个联通区域(一个根节点)和不形成回路. 代码: #include <cs ...

  2. 并查集及路径压缩模板

    并查集那最简单的应用就是合并两个元素和查询两个元素是否属于同一集体,它的工作过程如下:首先将每个元素放在单独的一个集合里,集合的名字就是这个元素的编号,对于查询操作就找两个元素的所在集合编号,集合编号 ...

  3. [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题

    文章目录 T1:One-Dimensional title solution code T2:[NOIP模拟赛]Freda的迷宫 title solution code T3:[NOIP模拟赛]一道防 ...

  4. 仿照美团用并查集实现迷宫

    原文链接: 仿照美团用并查集实现迷宫 上一篇: 值得一看的文章 下一篇: react 消除知乎div https://tech.meituan.com/404.html 美团博客上的404, 有点意思 ...

  5. hdu 1272 小希的迷宫 (并查集)

    小希的迷宫                                                                          Time Limit: 2000/1000 ...

  6. HDOJ---1272 小希的迷宫[并查集]

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. HDU——1272小希的迷宫(并查集+拓扑排序)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  8. HDU1272 小希的迷宫【并查集】

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. 并查集(小西的迷宫)

    上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...

最新文章

  1. Tile Racer — 3D 赛车游戏
  2. ppt复制切片器_这6个新手必学的PPT技能,让你效率提升10倍!套模板都比别人快...
  3. Windows10,Maven配置 电脑重启失效
  4. 发送编辑器里面的内容_【公众号运营技巧7】编辑器不会用?365微信公众号编辑器操作指南!#鱼神微电商创业#...
  5. 【活动(广州)】MonkeyFest2018 微软最有价值专家讲座
  6. Mware HA实战攻略之五VMwareHA测试验收
  7. windows 安装tomcat 7
  8. 好程序员分享24个canvas基础知识小结 1
  9. 【java基础】重载与重写
  10. 20个Android游戏源码,…
  11. idea 项目启动报错:Missing artifact com.oracle:ojdbc7:jar:12.1.0.1的处理方式
  12. Maven安装与配置,Idea配置Maven
  13. USB 3.0 对无线鼠标的干扰问题
  14. python北京房价预测_Python爬虫告诉你北京房价有多高
  15. Vue.js 组件 - 组件间的循环引用
  16. 联想thinkpad待机怎么唤醒_联想电脑睡眠无法唤醒_联想电脑睡眠怎么唤醒
  17. Struts2实现URL伪静态
  18. android 自定义关机界面,怎么定制Android关机界面
  19. 矢量线的一种栅格化算法
  20. 往届生再培训:嵌入式培训4个月,我经历了什么?

热门文章

  1. 跨链Cosmos(1) 网络拓扑
  2. C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符
  3. MySQL—视图(一)
  4. python基础高频_面试题(一)
  5. 运维的基本知识点及分类工作
  6. MoeCTF 2021Re部分------RedC4Bomb
  7. angr学习笔记(3)
  8. 【安全漏洞】从补丁追溯漏洞触发路径
  9. 重点解读《数据安全法》,做数据安全相关工作的必看
  10. MySQL LIMIT:限制查询结果的记录条数