利用纯JS和HTML Canvas生成随机迷宫过程中产生的…
2018-06-24 02:16:23来源:未知 阅读 ()
1 <html> 2 <head> 3 <title>生成随机迷宫v1.0</title> 4 </head> 5 <body> 6 <center style="margin-top: 20px;"> 7 <canvas id="myCan1" title="作者:谢辉"></canvas> 8 <p>生成随机迷宫v1.0</p> 9 <button onclick="history.go(0);">刷新</button> 10 </center> 11 </body> 12 <script> 13 var width = 1600; 14 var height = 800; 15 var cellWidth = 40; 16 var canvas = document.getElementById("myCan1"); 17 var cxt = canvas.getContext("2d"); 18 // 初始化canvas容器 19 function initCanvas() { 20 canvas.width = width; 21 canvas.height = height; 22 canvas.style = "border-radius: 15px"; 23 canvas.style.border = "1px solid #3b3b3b"; 24 }; 25 initCanvas(); 26 // 初始化画布 27 function initContext(cxt) { 28 cxt.lineCap="round"; 29 cxt.lineJoin="round"; 30 cxt.lineWidth = 1; 31 } 32 initContext(cxt); 33 // 开始画迷宫 34 function drawMaze(cxt) { 35 drawSingleBox(8, 0, 0, cxt); 36 }; 37 /*setInterval(function(){ 38 cxt.clearRect(0, 0, width, height); 39 drawMaze(cxt); 40 }, 50);*/ 41 drawMaze(cxt); 42 // 递归画单元格 43 function drawSingleBox(option, posX, posY, cxt){ 44 //cxt.strokeStyle = getColor(); 45 switch(option){ 46 case 0: 47 cxt.beginPath(); 48 cxt.moveTo(posX, posY); 49 cxt.lineTo(posX + cellWidth, posY); 50 cxt.stroke(); 51 break; 52 case 1: 53 cxt.beginPath(); 54 cxt.moveTo(posX + cellWidth, posY); 55 cxt.lineTo(posX + cellWidth, posY + cellWidth); 56 cxt.stroke(); 57 break; 58 case 2: 59 cxt.beginPath(); 60 cxt.moveTo(posX, posY + cellWidth); 61 cxt.lineTo(posX + cellWidth, posY + cellWidth); 62 cxt.stroke(); 63 break; 64 case 3: 65 cxt.beginPath(); 66 cxt.moveTo(posX, posY); 67 cxt.lineTo(posX, posY + cellWidth); 68 cxt.stroke(); 69 break; 70 } 71 if(posX >= width - cellWidth && posY >= height - cellWidth) { 72 return; 73 } else { 74 posX += cellWidth; 75 if(posX >= width){ 76 posX = 0; 77 posY += cellWidth; 78 } 79 drawSingleBox(Math.floor(Math.random()*4), posX, posY, cxt); 80 } 81 } 82 // 随机出任意颜色 83 function getColor(){ 84 var colorElements = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f"; 85 var colorArray = colorElements.split(","); 86 var color ="#"; 87 for(var i =0;i<6;i++){ 88 color+=colorArray[Math.floor(Math.random()*16)]; 89 } 90 return color; 91 } 92 </script> 93 </html>
1 setInterval(function(){ 2 cxt.clearRect(0, 0, width, height); 3 drawMaze(cxt); 4 }, 50);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:深入理解浏览器工作原理
- 详解HTML5 使用video标签实现选择摄像头功能 2020-02-07
- Extjs Label的 fieldLabel和html属性值对齐的方法 2020-01-07
- jquery模拟LCD 时钟的html文件源代码 2019-12-08
- javascript动态判断html元素并执行不同的操作 2019-11-30
- 在HTML页面加载完毕后运行某个js的实现方法 2019-11-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash