为了哄俺家丫头开心,在寒冷的冬夜,花了2个小时,完成了一个页面小游戏。当然了,做成更windows一样的,那就没意思了,所以在代码里做了点手脚,也算是一个变向的作弊器吧^_^,很想对俺家丫头说声:“我爱你,永远!”。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>小游戏</title> <mce:script type="text/javascript"><!-- document.οncοntextmenu=function(){return false;}//屏蔽右键菜单 var rowLen = 10;//行数 var colLen = 10;//列数 var landmineNumTotal = 10;//地雷数目 var unlandmineNumTotal = rowLen*colLen - landmineNumTotal;//非雷数目 var girlfriendName = "仙女"; /* * 校验是否已经输入玩家姓名 */ function checkName() { if(playerName.value=="") { alert("请输入玩家姓名后才能开始游戏!"); return false; } playerMessage.style.display="none"; rePutPlayerName.style.display="none"; return true; } /* * 重新输入玩家姓名 */ function reSetPlayerName() { rePutPlayerName.style.display="none"; playerMessage.style.display="block"; } /* * 初始化表格 */ function init() { if(!checkName()) return false; startBtn.value="游戏结束"; startBtn.οnclick=clearTable; var index = document.getElementById("level").selectedIndex; rowLen = document.getElementById("level").options[index].row; colLen = document.getElementById("level").options[index].col; landmineNumTotal = document.getElementById("level").options[index].landmine; leftLandmine.firstChild.innerText = landmineNumTotal; unlandmineNumTotal = rowLen*colLen - landmineNumTotal; var table = document.getElementById("t1"); var tbody; if(table==null){ table = document.createElement("<table id=t1 border=1 cellspacing=0 cellpadding=0></table>"); tbody = document.createElement("tbody"); table.appendChild(tbody); } else { tbody = table.firstChild; //删除各行 for(var i=table.rows.length-1;i>=0;i--) { table.deleteRow(i); } } for(var i=0;i<rowLen;i++) { var tr = document.createElement("tr"); for(var j=0;j<colLen;j++) { var td = document.createElement("td"); td.width=20; td.height=20; td.align="center"; var button = document.createElement('<input type=button style="width:100%;height:100%" οnmοusedοwn="mouseDown(this)" num=0 num1=0 mayLandmine=0>'); td.appendChild(button); tr.appendChild(td); } tbody.appendChild(tr); } table.appendChild(tbody); document.body.appendChild(table); //初使化地雷 var landmineNum = landmineNumTotal; while(landmineNum>0) { var row = parseInt(Math.random()*rowLen); var col = parseInt(Math.random()*colLen); var button = table.rows(row).cells(col).firstChild; if(button.hasLandmine == true){ continue; } button.hasLandmine = true; if(playerName.value==girlfriendName) button.value="㊣";//开作弊器 if(row>0)//上方的单元格 { var buttonBeside = table.rows(row-1).cells(col).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(row<rowLen-1)//下 { var buttonBeside = table.rows(row+1).cells(col).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(col<colLen-1)//右 { var buttonBeside = table.rows(row).cells(col+1).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(col>0)//左 { var buttonBeside = table.rows(row).cells(col-1).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(row>0&&col>0)//左上 { var buttonBeside = table.rows(row-1).cells(col-1).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(row>0&&col<colLen-1)//右上 { var buttonBeside = table.rows(row-1).cells(col+1).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(row<rowLen-1&&col<colLen-1)//右下 { var buttonBeside = table.rows(row+1).cells(col+1).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } if(row<rowLen-1&&col>0)//右下 { var buttonBeside = table.rows(row+1).cells(col-1).firstChild; buttonBeside.num = parseInt(buttonBeside.num)+1; } landmineNum--; } } /* * 清空表格 */ function clearTable() { var table = document.getElementById("t1"); //删除各行 for(var i=table.rows.length-1;i>=0;i--) { table.deleteRow(i); } rePutPlayerName.style.display="block"; startBtn.value="游戏开始"; startBtn.οnclick=init; } /* * 鼠标触发事件 */ function mouseDown(obj) { var code=event.button; if(code==1){ if(obj.hasLandmine) { if(playerName.value==girlfriendName) { alertMessage(obj); return; } obj.value="●"; alert("你踩到狗屎了,下次小心点吧!"); clearTable(); return; } var td = obj.parentNode; showTd(td); } else { if(obj.hasLandmine&&playerName.value==girlfriendName) { alert("宝贝,不用犹豫了,这就是地雷!"); obj.value = "㊣"; document.body.focus(); return; } obj.mayLandmine = (parseInt(obj.mayLandmine)+1)%3; if(obj.mayLandmine==0) { obj.value = ""; leftLandmine.firstChild.innerText = parseInt(leftLandmine.firstChild.innerText)+1; } else if(obj.mayLandmine==1) { obj.value = "〇"; } else { obj.value = "㊣"; leftLandmine.firstChild.innerText = parseInt(leftLandmine.firstChild.innerText)-1; } document.body.focus(); } } /* * 作弊提示信息 */ function alertMessage(obj) { obj.num1 = parseInt(obj.num1)+1; if(obj.num1==1) { alert("宝贝,那是地雷,不要踩!"); } else if(obj.num1==2) { alert("宝贝,不是说了不要踩嘛,那是地雷!"); } else if(obj.num1==3) { alert("宝贝,咋就不听哩,那是地雷呀!"); } else { alert("还不听是吧,行啊,有本事你踩呀!/r/n/r/n有我的保护,你是不会有事滴!^_^/r/n/r/n宝贝,我爱你!"); } } /* * 显示单元格,隐藏BUTTON */ function showTd(td) { var table = document.getElementById("t1"); if(!td.hasFind) { var num = td.firstChild.num; var color; if(num==0) { color="green"; } else if(num==1) { color="blue"; } else if(num==2) { color="orange"; } else { color="red"; } td.innerHTML = "<font color='"+color+"'><strong>"+(num==0?" ":num)+"</strong></font>"; td.hasFind = true; //td.firstChild.style.display = "none"; unlandmineNumTotal--; if(unlandmineNumTotal==0) { if(playerName.value==girlfriendName) { alert("宝贝,恭喜,早说了俺家丫头最聪明了!"); clearTable() return; } alert("恭喜您!"); clearTable(); return; } if(num==0) { findBeside(td); } } } /* * 如果单元格是零,则显示周围的单元格 */ function findBeside(obj) { var table = document.getElementById("t1"); var tr = obj.parentNode; var row = tr.rowIndex; var col = obj.cellIndex; if(row>0)//上方的单元格 { var buttonBeside = table.rows(row-1).cells(col); showTd(buttonBeside); } if(row<rowLen-1)//下 { var buttonBeside = table.rows(row+1).cells(col); showTd(buttonBeside); } if(col<colLen-1)//右 { var buttonBeside = table.rows(row).cells(col+1); showTd(buttonBeside); } if(col>0)//左 { var buttonBeside = table.rows(row).cells(col-1); showTd(buttonBeside); } if(row>0&&col>0)//左上 { var buttonBeside = table.rows(row-1).cells(col-1); showTd(buttonBeside); } if(row>0&&col<colLen-1)//右上 { var buttonBeside = table.rows(row-1).cells(col+1); showTd(buttonBeside); } if(row<rowLen-1&&col<colLen-1)//右下 { var buttonBeside = table.rows(row+1).cells(col+1); showTd(buttonBeside); } if(row<rowLen-1&&col>0)//右下 { var buttonBeside = table.rows(row+1).cells(col-1); showTd(buttonBeside); } } /* * 去左空格 */ function ltrim(str) { var pattern = new RegExp("^[//s]+","gi"); return str.replace(pattern,""); } /* * 去右空格 */ function rtrim(str) { var pattern = new RegExp("[//s]+$","gi"); return str.replace(pattern,""); } /* * 去左右空格 */ function trim(str) { return rtrim(ltrim(str)); } /* * 去所有空格 */ function mtrim(str) { var pattern = new RegExp("[//s| ]+","gi"); return str.replace(pattern,""); } // --></mce:script> </head> <body> <table width="100%" border=0 cellpadding=0 cellspacing=0> <tr> <td width="183"> <input type="button" id="startBtn" οnclick="init()" value="游戏开始"> 难度:<select id="level"> <option row=10 col=10 landmine=10>简单</option> <option row=20 col=20 landmine=50>困难</option> <option row=20 col=40 landmine=100>专家</option> </select> </td> <td> <span id="playerMessage"> 玩家姓名:<input type=text style="width:60" name="playerName" id="playerName" οnblur="this.value=mtrim(this.value)" value=""> </span> <input type=button id="rePutPlayerName" style="display:none;width:120" value="重新输入玩家姓名" οnclick="reSetPlayerName()"> </td> </tr> </table> <table width="100%" border=0 cellpadding=0 cellspacing=0> <tr> <td colspan=2> <font color=red>注:鼠标右键可以标记地雷,〇可能为地雷,㊣一定为地雷</font> </td> </tr> <tr> <td colspan=2> 剩下地雷数:<span id="leftLandmine"><font color=blue></font></span> </td> </tr> </table> </body> </html>