经典扫雷——JS原生代码
JS原生写扫雷,
如何不用xy坐标写出扫雷
附带思路图
function Mine(tr,td,leinum,num){this.tr=tr;this.td=td;this.arrsy=[];this.arrss=[];this.num=num;this.leinum=leinum;this.yuleinum=leinum;this.dom=document.getElementsByClassName('demo')[0];this.yulei=document.getElementsByTagName('span')[0];
}
Mine.prototype.createTable=function(){var demoParent=document.createElement('ul');demoParent.className=' ';for(i=0;i<this.num;i++){var demoSon=document.createElement('li');this.arrss.push(demoSon);this.arrss[i].pos=i;this.arrsy.push(demoSon)demoParent.appendChild(demoSon);// if(this.arrsy[i].type=='lei'){// demoSon.className='lei'// }} this.dom.innerHTML='';this.dom.appendChild(demoParent);demoParent.style.width=this.tr+'px';demoParent.style.height=this.td+'px';this.yulei.innerHTML=this.yuleinum;this.suoyin();this.changenum();
}
Mine.prototype.leirandom=function(){var arr=new Array(this.num);for(var i=0;i<arr.length;i++){arr[i]=this.arrss[i].pos;}arr.sort(function(){return 0.5-Math.random()})return arr.slice(0,this.leinum);
}
Mine.prototype.suoyin=function(){var rn=this.leirandom();var n=0;for(var i=0;i<this.num;i++){if(rn.indexOf(++n)!=-1){this.arrss[i]={type:'lei'}}else{this.arrss[i]={type:'number',value:0}}}
}
Mine.prototype.chazhao=function(x){var result=[];var tdnum=this.td/20;for(var i=0;i<this.arrss.length;i++){if(i==x+tdnum||(i==x+1&&parseInt(i/tdnum)==parseInt(x/tdnum))||(i==x-1&&parseInt(i/tdnum)==parseInt(x/tdnum))||i==x-tdnum){result.push(i);}else if((i==x+tdnum+1&&parseInt(x/tdnum+1)==parseInt(i/tdnum))||(i==x+tdnum-1&&parseInt(x/tdnum+1)==parseInt(i/tdnum))||(i==x-tdnum+1&&parseInt(x/tdnum-1)==parseInt(i/tdnum))||(i==x-tdnum-1&&parseInt(x/tdnum-1)==parseInt(i/tdnum))){result.push(i);}else{continue;}}return result;
}
Mine.prototype.changenum=function(){for(var i=0;i<this.arrss.length;i++){this.arrss[i].pos=i;var nn=this.chazhao(this.arrss[i].pos);if(this.arrss[i].type=='number'){continue;}else{for(var k=0;k<nn.length;k++){this.arrss[nn[k]].value +=1;}}}}
Mine.prototype.playgame=function(){this.createTable();var This=this;this.dom.oncontextmenu=function(e){e.preventDefault();e.stopPropagation();var event=e.target;if(event.className==''){event.className='hongqi';}else{event.className='';}}this.dom.onclick=function(e){var event=e.target;var cur=This.arrss[event.pos];if(cur.type=='lei'){event.className='lei';alert('游戏结束!');}else if(cur.type=='number'&&cur.value!=0){event.className='num';event.innerHTML=cur.value;} else{event.innerHTML='';event.className='num';function getAllZero(x){var all=This.chazhao(x);console.log(all)for(var i=0;i<all.length;i++){This.arrsy[all[i]].className='num';if(This.arrss[all[i]].value==0){if(!This.arrss[all[i]].check){This.arrss[all[i]].check=1;This.arrsy[all[i]].innerHTML='';getAllZero(all[i]);}}else{This.arrsy[all[i]].innerHTML=This.arrss[all[i]].value;}}}getAllZero(cur.pos);}}
}
var mine=new Mine(200,200,10,100);
mine.playgame();
我自己写的扫雷,没写完整,利用创建和数字去代表坐标,然后慢慢递归,递归哪里就看看就好了!思路图如下,可以参考参考
各位看官们,仅供参考哈!
经典扫雷——JS原生代码相关推荐
- 基于面向对象的图片轮播(js原生代码)
无论你想走多远,你都需要不断地走下去.前端最精华的便是原生的js,这也是我们前端工程师的技术分层的重要指标,也提现这你的代码能力,开发的水平.废话不多说,进入今天的主要分享----基于面向对象思想的图 ...
- jQuery转换JS原生代码
很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...
- js原生代码实现购物车
一.效果展示 双击商品,如果购物车没有该商品,添加到购物车中,如果有该商品数量加1. 全选全不选 刷新后数据不会消失 二.代码展示 1.基础框架 .screen里面展示商品,.cart购物车,商品信息 ...
- 倒计时(小时:分钟:秒钟)【JS原生代码】
<style type="text/css"> input { border: 1px solid rgba(0, 0, 0, ...
- Java 实现经典扫雷游戏 Github代码
使用Java GUI编写,有分等级.计分.计时.记录.自定义.自动扫雷.存档.读档等功能! GitHub地址:https://github.com/Power ...
- 学做全屏浮动广告 JS 原生代码
<!DOCTYPE HTML> <html><head><title>JS全屏漂浮广告</title> <meta http-equi ...
- js原生代码选项卡切换
选项卡功能实现 利用class类的方式,实现点击上面单个不同选项,选项设置样式,并且下面对应的区域切换成相应的内容 切换tab 1. 给所有选项卡绑定点击事件 2. 清除所有选项选中效果 3. 给当前 ...
- 使用js原生代码实现类似新闻列表的滚动 题目来自4399小游戏2020年前端笔试编程题
新闻列表的滚动循环播放 html代码 CSS代码 Script代码 总结 题目要求: 要求实现以下页面,其中列表项是滚动循环播放的,而且每次只显示3个,当鼠标经过的时候停止播放,鼠标离开继续播放 co ...
- js原生代码编写一个鼠标在页面移动坐标的检测功能,兼容各大浏览器
function mousePosition(e) {//IE9以上的浏览器获取 if (e.pageX || e.pageY) { return {x: e.pageX,y: e.pageY}; } ...
最新文章
- 牛逼!用 12 万行代码堆出来个 蔡徐坤,编译还能通过!
- VS2017 运行VS2013项目
- maven依赖传递和排除依赖冲突
- 基于CSE的微服务工程实践-多微服务框架演进
- 华硕无双新品首爆:H45标压处理器+全球首款2.8K 120Hz OLED屏
- 把一个服务器的数据库导入到另一台服务器中
- Aitit aop之道 艾龙著 需要整合zop资料包东西 第1章 AOP的产生 1.1 软件开发方法的演进 1.2 AOP产生的前奏——把系统看做一批关注点
- 机器学习在测井和地震的应用
- C语言六边形蜂巢数组,CSS 实现蜂巢/六边形图集
- 国际新闻|PostgreSQL 14.3、13.7、12.11、11.16 和 10.21 发布
- 259-数据明文传输的安全问题
- 网易定向预研图形学项目摘录
- 什么是量子安全?量子计算时代下的基本安全技术
- 一度智信电商:店铺转化率太低?
- 「UG/NX」NX2212手动安装方法教程
- 一个程序员的跨洋找工作分享
- 三、安装 Entity Framework Core
- 大数据征信如何提升金融机构风控能力
- Android能够获取到唯一的设备ID吗?
- 我的世界的服务器如何制作,《我的世界》服务器怎么做 服务器制作教程介绍...