首页 > 代码库 > 原生javascript扫雷游戏
原生javascript扫雷游戏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>扫雷游戏</title><meta http-equiv="Content-Language" content="zh-CN" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="Generator" content="Notepad++" /><meta name="Robots" content="all" /><meta name="Author" content="622" /><meta name="Keywords" content="模版" /><meta name="Description" content="模版" /><meta name="Copyright" content="Copyright (c) 2014 rick All Rights Reserved." /><script language="javascript"></script><style>.all{margin:0 auto; width:960px;}ul,li{margin:0; padding:0; list-style:none;}#block>ul{height:32px; cursor:pointer;}#block>ul>li{float:left; width:30px; height:30px; border:1px solid black; background:gray; color:white; text-align:center; position:relative;}#block>ul>li>span{position:absolute; top:0; left:0; height:30px; width:30px; background:#eee;}#ctrl{margin:20px auto;}</style></head><body><div class="all"> <h1>小乐扫雷大作战</h1> <form id="ctrl"> <label>行(1~30)<input type="text" id="row_n" value="10" /></label><br /> <label>列(1~30)<input type="text" id="col_n" value="10" /></label><br /> <label>雷的比例(1~0.01)<input type="text" id="thunder_n" value="0.3" /></label><br /> <input type="button" id="submit" value="提交" /> <input type="reset" id="reset" value="重置" /><br /> <label>提示消息<input type="text" id="msg" readonly="ture" /></label> </form> <div id="block"></div></div></body></html>
document.oncontextmenu=function (){ return false; //阻止默认事件};window.onload=function(){ var oSubmit = document.getElementById("submit"); //var oReset = document.getElementById("reset"); //var oRow_n = document.getElementById("row_n"); //var oCol_n = document.getElementById("col_n"); //var oThunder_n = document.getElementById("thunder_n"); var oMsg = document.getElementById("msg"); oMsg.value = "请输入要挑战的雷阵!"; oSubmit.onclick = init; function init(){ var oSubmit = document.getElementById("submit"); var oReset = document.getElementById("reset"); var oRow_n = document.getElementById("row_n"); var oCol_n = document.getElementById("col_n"); var oThunder_n = document.getElementById("thunder_n"); var oMsg = document.getElementById("msg"); //参数设置 var m = oRow_n.value; //行 var n = oCol_n.value; //列 var p = oThunder_n.value; var x = Math.floor(m*n*p); //雷的数目 //console.log(m,n,x); if(!(m<30&&m>=0&&n<30&&n>=0&&p>=0&&p<=1)){ oMsg.value = "参数不合法"; }else{ oMsg.value = "参数设置成功"; var oDiv = document.getElementById("block"); oDiv.innerHTML = ""; var array = new Array(m); //布局 for(var j=0; j<m; j++){ var oUl = document.createElement("ul"); array[j] = new Array(n); for(var i=0; i<n; i++){ var oLi = document.createElement("li"); oUl.appendChild(oLi); array[j][i] = [0,0,0]; //[是否是雷,标记状态,周围雷数] } oDiv.appendChild(oUl); } //初始化雷区 for(var i=0; i<x; i++){ var a = Math.floor(Math.random() * m); var b = Math.floor(Math.random() * n); if(array[a][b][0] == 0){ array[a][b][0] = 1; valid(a-1,b-1); valid(a-1,b); valid(a-1,b+1); valid(a,b-1); valid(a,b+1); valid(a+1,b-1); valid(a+1,b); valid(a+1,b+1); }else{ x++; } } //布雷 for(var i=0; i<m; i++){ for(var j=0; j<n; j++){ oLi = getBlock(i,j); if(array[i][j][0] == 0){ oLi.innerHTML = array[i][j][2]; }else{ oLi.innerHTML = "#"; oLi.style.background = "red"; } var oSpan = document.createElement("span"); oLi.appendChild(oSpan); } } //监听事件 for(var i=0; i<m; i++){ for(var j=0; j<n; j++){ var oSpan = getBlock(i,j).getElementsByTagName("span")[0]; oSpan._i = i; oSpan._j = j; function listen_1(){ if(array[this._i][this._j][1]==2) return false; this.style.display = "none"; array[this._i][this._j][1] = 1; check(); if(array[this._i][this._j][0]==1){ alert("game over"); oMsg.value = "抱歉,挑战失败"; var aSpan = oDiv.getElementsByTagName("span"); for(var m=0; m < aSpan.length; m++){ aSpan[m].style.display = "none"; } } } function listen_2(){ if(array[this._i][this._j][1] == 0){ array[this._i][this._j][1] = 2; this.style.backgroundColor = "red"; check(); }else{ array[this._i][this._j][1] = 0; this.style.backgroundColor = "#eee"; check(); } } function check(){ console.log(array); var f=1; for(var i=0; i<m; i++){ for(var j=0; j<n; j++){ console.log(array[i][j]); if(array[i][j][0]==0){ if(array[i][j][1]!=1){ f=0; break; break; } } if(array[i][j][0]==1){ if(array[i][j][1]!=2){ f=0; break; break; } } } } if(f==1){ alert("恭喜挑战成功"); oMsg.value = "恭喜挑战成功"; } } on(oSpan,"click",listen_1); on(oSpan,"contextmenu",listen_2); } } } function valid(x,y){ if(x>=0&&x<m&&y>=0&&y<n){ array[x][y][2] ++; } } } function getBlock(m,n){ var oDiv = document.getElementById("block"); var aUl = oDiv.getElementsByTagName("ul"); var ali = aUl[m].getElementsByTagName("li"); var oLi = ali[n]; return oLi; } function on(node,eventType,handler){ node = typeof node == "string" ? document.getElementById(node) : node; if(document.all){ node.attachEvent("on" + eventType, handler); }else{ node.addEventListener(eventType, handler, false); } } }
原生javascript扫雷游戏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。