欢迎光临
我们一直在努力

JS实现扫雷游戏(源代码带注释)

运行结果:

JS实现扫雷游戏(源代码带注释)

JS实现扫雷游戏(源代码带注释)

超级简单,下面直接下面贴上源代码,一共两个文件 扫雷.html 和 saolei.js

扫雷.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>扫雷</title> <style> body { margin: 0; } #map { width: 500px; height: 500px; background-color: aquamarine; /* 设置居中1 */ /* position: absolute; left: calc(50% - 250px); */ /* 设置居中2,与width搭配使用 */ margin: 20px auto; } /* #map button 选择所有子孙*/ /* 只选第一层 */ #map>button { width: 50px; height: 50px; background-color: pink; color: aliceblue; float: left; border: 1px solid white; } #bulei { width: 100px; height: 50px; background-color:blueviolet; position: relative; left: calc(50% - 50px); } #center { width: 1200px; margin: 0 auto; } #tnum>span{ width: 100px; /* margin: 10px auto; */ position: relative; left: calc(50% - 50px); color: rgb(46, 95, 78); } </style> </head> <body> <div id="center"> <div id="map"> </div> <div id="tnum"><span>通过数✅:0</span></div> <button id="bulei" onclick="bulei()">Start</button> <!-- <button id="restart" onclick="restart()">Restart</button> --> </div> <!-- js文件应引入在body下方 --> <script src="./saolei.js"></script> </body> </html>

saolei.js

// 9 代表未点击 // 0-8 代表周围雷数 // * 代表雷 // 返回一个二维数组 function getMap (row,col){ var mapArray = []; for( let hang = 1 ; hang <= row ; hang++){ let smallArray = []; for( lie = 1 ; lie <= col ; lie++){ smallArray.push("9") } mapArray.push(smallArray); } // console.log(mapArray); return mapArray; } var gameMap = getMap(10,10);// 初始化————生成一个10x10的还未布雷的地图 var tnum = 0; // 正确数。正确数 = 用户已点击的非炸弹方块数 var leinum = 0; // 雷数 // 当tnum=100-leinum 便可以判定用户通关 // 展示已经布雷的地图 function showMap(tempMapArr){ var domStr = `` ; for(let i = 0; i <= tempMapArr.length-1 ; i++){ for(let j = 0; j <= tempMapArr[i].length-1 ;j++){ // 对于初始的方块我们都选择隐藏其真正的值 if(tempMapArr[i][j]=="9" || tempMapArr[i][j]=="*"){ domStr += `<button onclick = "game(${i},${j})">🌈</button>` }else{ // 对于用户已经点击的值(即count已经被计算出来的方块 显示它的count),注意这里不含onclick,否则会重复计算tnum。 domStr += `<button>${tempMapArr[i][j]}</button>` } } } // 将地图渲染上去 document.getElementById('map').innerHTML = domStr } //布雷 function bulei() { gameMap = getMap(10,10);// 先初始化一个地图 tnum = 0; // 重置正确数 document.getElementById("tnum").innerHTML = `<span>通过数✅:${tnum}</span>`; leinum = parseInt(Math.random() * 30); // 随机生成一个雷数 // console.log("leinum:"+leinum); for( let num = 0; num < leinum; num++){ // 随机生成布雷的行、列 var leihang = parseInt(Math.random() * 10); // Math.random() 0<..<1 var leilie = parseInt(Math.random() * 10); // 如果该点已有雷 就不要重复布雷了 if(gameMap[leihang][leilie] == "*"){ num-=1; continue; }else{ gameMap[leihang][leilie] = "*" } } showMap(gameMap); } function game (nowHang,nowLie) { //当前点击的坐标 console.log(gameMap[nowHang][nowLie]); if(gameMap[nowHang][nowLie] == "*"){ gameover(gameMap); alert("游戏结束 ~"); }else{ var count = 0; for( let i = nowHang-1; i <= nowHang+1 ; i++){ for( let j = nowLie-1 ; j <= nowLie+1 ; j++){ if(0<=i &amp;& i<=9 && 0<=j && j<=9 && gameMap[i][j] == "*"){ count++; } } } gameMap[nowHang][nowLie]=count; tnum++; document.getElementById("tnum").innerHTML = `<span>通过数✅:${tnum}</span>`; showMap(gameMap); //雷全部排出来了 if(tnum == 100-leinum){ console.log("tnum:"+tnum); alert("🌟~~√ 恭喜通关 ~(^_^)😊💜") gameover(gameMap); } } } // 游戏结束 展示地图 function gameover(tempMapArr) { var domStr = `` ; for(let i = 0; i <= tempMapArr.length-1 ; i++){ for(let j = 0; j <= tempMapArr[i].length-1 ;j++){ if( tempMapArr[i][j]=="*"){ domStr += `<button onclick = "game(${i},${j})" style="background-color:rgb(191, 162, 218)">💣</button>` }else{ domStr += `<button>🌈</button>` } } } document.getElementById('map').innerHTML = domStr; document.getElementById("tnum").innerHTML = `<span>游戏结束!</span>`; } 

以上只是简单的扫雷实现,大家可以在这基础上进行进一步的拓展~🌟

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《JS实现扫雷游戏(源代码带注释)》
文章链接:https://www.456zj.com/36729.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址