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原生代码相关推荐

  1. 基于面向对象的图片轮播(js原生代码)

    无论你想走多远,你都需要不断地走下去.前端最精华的便是原生的js,这也是我们前端工程师的技术分层的重要指标,也提现这你的代码能力,开发的水平.废话不多说,进入今天的主要分享----基于面向对象思想的图 ...

  2. jQuery转换JS原生代码

    很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...

  3. js原生代码实现购物车

    一.效果展示 双击商品,如果购物车没有该商品,添加到购物车中,如果有该商品数量加1. 全选全不选 刷新后数据不会消失 二.代码展示 1.基础框架 .screen里面展示商品,.cart购物车,商品信息 ...

  4. 倒计时(小时:分钟:秒钟)【JS原生代码】

    <style type="text/css">         input {             border: 1px solid rgba(0, 0, 0, ...

  5. Java 实现经典扫雷游戏 Github代码

    使用Java GUI编写,有分等级.计分.计时.记录.自定义.自动扫雷.存档.读档等功能!                      GitHub地址:https://github.com/Power ...

  6. 学做全屏浮动广告 JS 原生代码

    <!DOCTYPE HTML> <html><head><title>JS全屏漂浮广告</title> <meta http-equi ...

  7. js原生代码选项卡切换

    选项卡功能实现 利用class类的方式,实现点击上面单个不同选项,选项设置样式,并且下面对应的区域切换成相应的内容 切换tab 1. 给所有选项卡绑定点击事件 2. 清除所有选项选中效果 3. 给当前 ...

  8. 使用js原生代码实现类似新闻列表的滚动 题目来自4399小游戏2020年前端笔试编程题

    新闻列表的滚动循环播放 html代码 CSS代码 Script代码 总结 题目要求: 要求实现以下页面,其中列表项是滚动循环播放的,而且每次只显示3个,当鼠标经过的时候停止播放,鼠标离开继续播放 co ...

  9. js原生代码编写一个鼠标在页面移动坐标的检测功能,兼容各大浏览器

    function mousePosition(e) {//IE9以上的浏览器获取 if (e.pageX || e.pageY) { return {x: e.pageX,y: e.pageY}; } ...

最新文章

  1. 牛逼!用 12 万行代码堆出来个 蔡徐坤,编译还能通过!
  2. VS2017 运行VS2013项目
  3. maven依赖传递和排除依赖冲突
  4. 基于CSE的微服务工程实践-多微服务框架演进
  5. 华硕无双新品首爆:H45标压处理器+全球首款2.8K 120Hz OLED屏
  6. 把一个服务器的数据库导入到另一台服务器中
  7. Aitit aop之道 艾龙著 需要整合zop资料包东西 第1章 AOP的产生         1.1 软件开发方法的演进         1.2 AOP产生的前奏——把系统看做一批关注点
  8. 机器学习在测井和地震的应用
  9. C语言六边形蜂巢数组,CSS 实现蜂巢/六边形图集
  10. 国际新闻|PostgreSQL 14.3、13.7、12.11、11.16 和 10.21 发布
  11. 259-数据明文传输的安全问题
  12. 网易定向预研图形学项目摘录
  13. 什么是量子安全?量子计算时代下的基本安全技术
  14. 一度智信电商:店铺转化率太低?
  15. 「UG/NX」NX2212手动安装方法教程
  16. 一个程序员的跨洋找工作分享
  17. 三、安装 Entity Framework Core
  18. 大数据征信如何提升金融机构风控能力
  19. Android能够获取到唯一的设备ID吗?
  20. 我的世界的服务器如何制作,《我的世界》服务器怎么做 服务器制作教程介绍...

热门文章

  1. 江苏计算机小高考查询,江苏省小高考成绩查询
  2. android极光推送声音,解决极光推送后台接收到推送消息,无提示音不震动
  3. word空格不能出现下划线的解决办法
  4. 微信小程序自定义组件子传父详解(多图)
  5. ios13 无法传参_免费更新浪漫雅圆+Bauhaus优化适配iOS13
  6. [Rust笔记]Rust生成随机数的方法
  7. vsomeip porting 札记
  8. 长沙嵌入式linux,长沙嵌入式Linux周末班
  9. php 字符串判断维文,学习文史哲 维 文
  10. 基于移动设备与CNN的眼动追踪技术简介