利用纯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中的画笔等等 ...
随机推荐
- JS中0与‘0’
JS中0为false,字符串‘0’为true
- JUnit测试模块使用
JUnit简介 JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUn ...
- 使用mybatis plus自动生成controller、service、dao、mapper、entity代码
官网:http://mp.baomidou.com(这个项目不仅仅可以用于代码生成,还有分页等其他功能,是对mybatis的一层封装) 要求:基于sql自动生成domain.controller.se ...
- Java实例---简单的上课管理系统
源码分析 Course.java package com.ftl.many2many; import java.util.*; public class Course { private int cr ...
- 企业级Apache详解2
http_conf主配置说明 root@lamp01 apache]# grep -Ev "#|^$" conf/httpd.conf DocumentRoot "/us ...
- @Autowired和@Resource注解的区别
@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false.如果我们想使用按名称装配,可以结合@Qualifier注 ...
- 沉淀,再出发:python爬虫的再次思考
沉淀,再出发:python爬虫的再次思考 一.前言 之前笔者就写过python爬虫的相关文档,不过当时因为知识所限,理解和掌握的东西都非常的少,并且使用更多的是python2.x的版本的功能,现 ...
- Linux命令--系统管理
shutdown命令 Linux shutdown命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机. 使用权限:系统管理者. 语法 shu ...
- Java 基本语法(关键字、标识符、常量、注释)
1. Java 程序的构成 对象(object):对象是类的一个实例,有状态和行为. 类(class):类是一个模板,它描述一类对象的行为和状态. 方法(method):方法就是行为,一个类可以有很多 ...
- 虚拟机下的CentOS无法上网的解决办法
1.首先保证虚拟机的网络适配器为NAT模式 2.设置虚拟机的“编辑”-->“虚拟网络编辑器”中的VMnet8的DHCP的设置两个选项都勾选上. 3.设置物理主机,保证虚拟网关的IP地址为自动获取 ...