问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用js做扫雷,雷区是怎么做的

发布网友 发布时间:2022-04-30 07:53

我来回答

2个回答

懂视网 时间:2022-04-22 20:16

//HTMEL
<body>
 <p class="content"> </p></body>
//css
.bottom,over { text-align: center; line-height: 0px;}
 .bottom p { display: inline-block; width: 30px; height: 30px; border: 1px solid #808080; background-color: #f4a; text-align: center; font: 20px/30px arial; }
//JS
// 保存 初始雷化记录 和 拆雷记录 100个按钮中 有25个雷var box = Array(10);
//初始化底层function initBottom() { const content = document.getElementsByClassName('content')[0]; const bottom = document.createElement('p'); content.appendChild(bottom); bottom.className = "bottom";
 for (let i = 0; i < 10; i++) { box[i] = new Array(10); for (let j = 0; j < 10; j++) {  const p = document.createElement('p');  bottom.appendChild(p);  p.id = "bottom[" + i + "][" + j + "]";  box[i][j] = 0; } bottom.innerHTML = bottom.innerHTML + "<br />"; }
 initBom();}
//初始化 25个 bom 颜色 和 innerHTMLfunction initBom() { //改变颜色 for (let i = 0; i < 25; i++) { let x = Math.floor(Math.random() * 10); let y = Math.floor(Math.random() * 10); while (box[x][y] == 1) {  x = Math.floor(Math.random() * 10);  y = Math.floor(Math.random() * 10);  if (box[x][y] == 0) {  break;  } }
 box[x][y] = 1; document.getElementById("bottom[" + x + "][" + y + "]").style.backgroundColor = "rgb(0, 0, 0)"; document.getElementById("bottom[" + x + "][" + y + "]").innerHTML = "x"; // 否则 对不起 ? }
 // 生成底层数字 for (let i = 0; i < 10; i++) { for (let j = 0; j < 10; j++) {
  if (!box[i][j] == 1) {  document.getElementById("bottom[" + i + "][" + j + "]").innerHTML = getNumber(i, j);  }
 } }}
// 取得 周围雷的个数function getNumber(i, j) { let num = 0, x, y; // 四周 雷的 个数统计 for (let x = i - 1; x <= i + 1; x++) { for (y = j - 1; y <= j + 1; y++) {  if (x == i && y == j) {  continue;  }  if (document.getElementById("bottom[" + x + "][" + y + "]")) {  if (box[x][y] == 1) {   num++;  }  } } } return num;}
//初始化 上层 overfunction initOver() {
 const content = document.getElementsByClassName('content')[0]; const over = document.createElement('p'); content.appendChild(over); over.className = "over"; over.id = "over";
 for (let i = 0; i < 10; i++) { for (let j = 0; j < 10; j++) {  const p = document.createElement('p');  over.appendChild(p);  p.id = "over[" + i + "][" + j + "]"; } over.innerHTML = over.innerHTML + "<br />"; }
 //取消 右击 菜单 over.oncontextmenu = function (e) { e.returnValue = false; }
 // 点击 做标记 over.onclick = function (e) { const target = e.srcElement; if (target.style.backgroundColor == "rgb(255, 255, 255)") {  target.style.backgroundColor = "#808080"; } else {  target.style.backgroundColor = "rgb(255, 255, 255)"; } }
 // 双击拆雷 over.ondblclick = function (e) { const target = e.srcElement; const strId = target.id.substring(4, target.id.length); if (document.getElementById("bottom" + strId).style.backgroundColor == "rgb(0, 0, 0)") {  document.getElementById('over').style.display = "none"; } else {  target.style.opacity = 0;  let i = parseInt(strId.substring(1, 2));  let j = parseInt(strId.substring(4, 5));  box[i][j] = 1;  // 等于0 扩散  if (document.getElementById("bottom" + strId).innerHTML == 0) {  zooming(i, j);  } else {  if (isGameOver()) {   alert("真厉害");  }  }
 } }}
//扩散: 当周围有 0时,自动显示function zooming(i, j) {
 for (let x = i - 1; x <= i + 1; x++) { for (y = j - 1; y <= j + 1; y++) {  if (document.getElementById("bottom[" + x + "][" + y + "]") && document.getElementById("bottom[" + x + "][" + y + "]").innerHTML == 0) {  document.getElementById("over[" + x + "][" + y + "]").style.opacity = 0;  if (box[x][y] == 0) {   box[x][y] = 1;   zooming(x, y);  }  } } }}
//是否清除完 box[][] 初始化 雷时赋值 1,拆雷是赋值 1,全部为1时,完成扫雷。function isGameOver() { for (let i = 0; i < 10; i++) { for (let j = 0; j < 10; j++) {  if (box[i][j] == 0) {  return false;  } } } return true;}

相关文章:

js版扫雷实现代码 原理不错

js实现扫雷的代码

热心网友 时间:2022-04-22 17:24

可以用table作网格,每个td表示一个,雷区就给td设个属性a, a=1, 不是雷区就是a=0
然后随机给每个单元格的a赋值 0或者1,只要保证最后一共有指定个数的雷就好。。
用户点击td触发td的click事件,判断td的a是不是1,是1就中雷;不然就搜索该td附近的格子雷的个数。右键事件表示排雷
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么一些男性喜欢要求伴侣叫自己爸爸? proteus8中怎么放置引脚标号 ...在proteus里不知道用什么表示?有没有什么proteus中专门的中英文对照... 甜蜜家园郑毅铭是什么身份 甜蜜家园第二季郑毅铭喜欢谁 瑞梦喜智能空调床垫适合人群 小孩可以用智能床垫吗 智能床垫适合哪些人用 我父亲今年59岁,有高血压和颈椎病的病史,最近一段时间感觉一躺下就偏... ...刚从医院治疗回来。我想买个枕头给他,不知买怎样的比较好?_百度知 ... 有什么正规的外汇平台吗 小天鹅滚筒洗衣机一直排水是什么原因, 小天鹅滚筒洗衣机进水后,洗一遍后开始排水就不停止,直到报警响起后 梦见已过世爸爸带一家人坐火车 db2中建立了分区表,如何快速清除一个分区的 兰州有卖酒精炉用液体酒精的吗? 在宿舍使用液体酒精炉造成烧伤属于哪种高校火灾事故 酒精炉点火有味么 酒精炉用的那种液态的酒精有毒吗?如果沾到食品了还能吃吗?? 我用平板登录钉钉,为什么只能打开一个学习群的工作通知和家校本。另一个学习群的工作通知打不开? 卡式瓦斯炉和酒精炉哪个更安全 在寝室用的酒精炉&nbsp;液体好&nbsp;还是固体好..... 我一直在钉钉群,之前也都可以打开通知和家校本,现在为什么打不开,但昨晚老师发的家校本又能看见? 我是单身但在梦里梦见自己有爱人有孩子,一家三口很幸福。解梦 做到创新的方法有哪些? 工作拖沓如何改进 怎样在工作中创新? iPhone 6手机wifi信号太差,怎么办? 苹果6接收wifi信号不好怎么办 苹果6手机WiFi信号很差,挨着无线都只有2格,如何解决? 苹果6+接受wifi为什么信号差 用JS写扫雷游戏怎样写 JavaScript能出做扫雷游戏吗? js编写扫雷中,用for(i&lt;100)循环为每一个div添加单击事件,并调用迭代函 ... 如何学好JavaScript? PHOTOSHOP启用喷枪跟不启用喷枪有什么区别?? js怎的做到熟练,有什么比较好的练习题进阶网站 ps喷枪笔刷画出来一圈一圈过渡不自然怎么办 ...可是一最小化就自动暂停了,据说JAVASCRIPT代码可以解决这个问题... photoshop里面的19号喷枪笔刷没了怎么办? 推荐由javascript,html,css等前端技术(非flash)开发的游戏或者应用_百 ... 扫雷游戏程序设计 新手可以给自己家里的家具刷漆吗,能刷出外面的师傅的效果吗?有什么要注意的 有没有办法吧ps 的喷*工具 默认的圆形笔刷变成 长方形呢? 可以的话请说具体点 我是新手? 优绘喷枪无效果 美锦能源和宝丰能源那个制氢更完美 网易云黑胶7级什么水平 美瞳直径最小是多少? 我的世界1.8.1怎么输中文 网易云黑胶会员4级要多久 美瞳小直径是多大的