利用纯JS和HTML Canvas生成随机迷宫过程中产生的有趣的事情
<html>
<head>
<title>生成随机迷宫v1.0</title>
</head>
<body>
<center style="margin-top: 20px;">
<canvas id="myCan1" title="作者:谢辉"></canvas>
<p>生成随机迷宫v1.0</p>
<button onclick="history.go(0);">刷新</button>
</center>
</body>
<script>
var width = 1600;
var height = 800;
var cellWidth = 40;
var canvas = document.getElementById("myCan1");
var cxt = canvas.getContext("2d");
// 初始化canvas容器
function initCanvas() {
canvas.width = width;
canvas.height = height;
canvas.style = "border-radius: 15px";
canvas.style.border = "1px solid #3b3b3b";
};
initCanvas();
// 初始化画布
function initContext(cxt) {
cxt.lineCap="round";
cxt.lineJoin="round";
cxt.lineWidth = 1;
}
initContext(cxt);
// 开始画迷宫
function drawMaze(cxt) {
drawSingleBox(8, 0, 0, cxt);
};
/*setInterval(function(){
cxt.clearRect(0, 0, width, height);
drawMaze(cxt);
}, 50);*/
drawMaze(cxt);
// 递归画单元格
function drawSingleBox(option, posX, posY, cxt){
//cxt.strokeStyle = getColor();
switch(option){
case 0:
cxt.beginPath();
cxt.moveTo(posX, posY);
cxt.lineTo(posX + cellWidth, posY);
cxt.stroke();
break;
case 1:
cxt.beginPath();
cxt.moveTo(posX + cellWidth, posY);
cxt.lineTo(posX + cellWidth, posY + cellWidth);
cxt.stroke();
break;
case 2:
cxt.beginPath();
cxt.moveTo(posX, posY + cellWidth);
cxt.lineTo(posX + cellWidth, posY + cellWidth);
cxt.stroke();
break;
case 3:
cxt.beginPath();
cxt.moveTo(posX, posY);
cxt.lineTo(posX, posY + cellWidth);
cxt.stroke();
break;
}
if(posX >= width - cellWidth && posY >= height - cellWidth) {
return;
} else {
posX += cellWidth;
if(posX >= width){
posX = 0;
posY += cellWidth;
}
drawSingleBox(Math.floor(Math.random()*4), posX, posY, cxt);
}
}
// 随机出任意颜色
function getColor(){
var colorElements = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
var colorArray = colorElements.split(",");
var color ="#";
for(var i =0;i<6;i++){
color+=colorArray[Math.floor(Math.random()*16)];
}
return color;
}
</script>
</html>
生成随机迷宫
setInterval(function(){
cxt.clearRect(0, 0, width, height);
drawMaze(cxt);
}, 50);
去掉此段代码的注释
利用纯JS和HTML Canvas生成随机迷宫过程中产生的有趣的事情的更多相关文章
- 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览
### 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览 http://segmentfault.com/a/1190000002583569
- C#怎么在生成解决方案的过程中执行perl脚本(C#早期绑定)
转载 怎么在生成解决方案的过程中执行perl脚本 早期绑定在编译期间识别并检查方法.属性.函数,并在应用程序执行之前执行其他优化.在这个绑定中,编译器已经知道它是什么类型的对象以及它拥有的方法或属性. ...
- 微信小程序 canvas 生成随机验证码
转载:https://blog.csdn.net/qq_16646819/article/details/81020245?utm_source=blogxgwz0 js // pages/bind/ ...
- js根据条件json生成随机json:randomjson
前端开发中,在做前后端分离的时候,经常需要手写json数据,有3个问题特别揪心: 1,数据是写死的,不能按一定的条件随机生成长度不一,内容不一的数据 2,写数组的时候,如果有很多条,需要一条一条地写, ...
- 用Canvas生成随机验证码(后端前端都可以)
一 .使用前端生成验证码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- captcha.js一个生成验证码的插件,使用js和canvas生成
一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...
- js生成随机固定长度字符串的简便方法
概述 碰到一个需求:用js生成固定长度的字符串.在网上查了很多资料,网上的方法都比较麻烦.我自己灵光一现,实现了一个比较简单的方法.记录下来,供以后开发时参考,相信对其他人也有用. js生成随机字符串 ...
- 纯js生成QRCode
纯js,不依赖jquery,非常好用,废话不多说,直接上代码! <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- 利用tween.js算法生成缓动效果
在讲tween类之前,不得不提的是贝塞尔曲线了.首先,贝塞尔曲线是指依据四个位置任意的点坐标绘制出的一条光滑曲线.它在作图工具或动画中中运用得比较多,例如PS中的钢笔工具,firework中的画笔等等 ...
随机推荐
- plan,idea,and dream
自学机器学习/数据分析/前端 目前想法是从前端入手,学会写/分析网页及其内容/数据,然后使用爬虫爬取数据,然后用机器学习算法对数据进行处理.哈哈,想法是不是太天真了. 学习都从网上的资料入手,因此发现 ...
- Install MySQL on Mac
1. 可参考此文章:http://www.cnblogs.com/macro-cheng/archive/2011/10/25/mysql-001.html 2. 目前MySQL(我用的mysql 5 ...
- python文本操作
file_obj=file("文件路径","模式") 打开文件的模式有: r,以只读方式打开文件 w,打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该 ...
- visual box 安装 centos7后,无法上网
ifconfig 命令后,只看到个回环网卡: 进入 /etc/sysconfig/network-scripts后,发现有设备 visual box 中设置为“桥接网卡”,也没问题,最后把控制芯片改 ...
- CentOS随笔 - 2.CentOS7安装ftp支持(vsftpd)
前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 在前一篇文章中介绍了在虚拟机中安装CentOS7, 接下来就要进行配置了, 第一个就是安装ftp支持. 要不然 ...
- python基础——操作系统简介
不同应用领域的主流操作系统 l 桌面操作系统 l 服务器操作系统 l 嵌入式操作系统 l 移动设备操作系统 桌面操作系统 Windows系列 用户群体很大 MacOS 适合于开发人员 Linu ...
- August 09th 2017 Week 32nd Wednesday
Find hope from despair, life will become brilliant. 从绝望中寻找希望,人生终将辉煌. Have you ever seen the movie Ba ...
- source insight设置问题 [问题点数:20分,结帖人leecapacity]
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f7327d818c027fa3cf1fd5791d1c05 ...
- Python2.7 - IMOOC - 3
第三章 Python变量和数据类型 3-4.变量 变量名必须是大小写英文.数字和下划线(_)的组合,且不能用数字开头. 同一个变量可以反复赋值,而且可以是不同类型的变量,例如: a = 123 # a ...
- 把bootstrap4 dropdown 的导航下拉菜单触发方式改为鼠标浮动触发
方法1: 原文: https://zzll.org/article/bootstrap4-xialacaidan 很简单,css中加入如下代码 .dropdown:hover>.dropdown ...