1. 程式人生 > >Web版 掃雷 JS實現

Web版 掃雷 JS實現

這幾天中毒了,無比迷戀掃雷遊戲(摔!明明是機房機器渣到只能玩掃雷),於是在上網路互聯與路由課的時候,寫了個Web版的掃雷遊戲,起碼能玩了,還在完善中,嘿嘿,晚上又增加了一些有趣的東東,還有個彩蛋。DEMO:http://imgbattle.cn/mine/

其中雷區擴充套件的時候,用的BFS演算法。

考慮到所有節點都必須被儲存,因此BFS的空間複雜度為 O(|V| + |E|),其中 |V| 是節點的數目,而 |E| 是圖中邊的數目。(另一種說法稱BFS的空間複雜度為 O(BM),其中 B 是最大分支系數,而 M 是樹的最長路徑長度)由於對空間的大量需求,因此BFS並不適合解非常大的問題。還有就是瀏覽器頁面有限,滾動條影響體驗太大,所以把雷區大小作了限制。

邊的長度相等,無權圖,所以BFS演算法是最佳解。

原始碼:
想要JS的同學,可以下方留言郵箱,順豐包郵。

HTML

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Mine</title>
    <link rel="stylesheet" type="text/css" href="mine.css">
    <!-- <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> -->
<script src="jquery.min.js"></script> <!-- <script src="mine.js"></script> --> <script src="mine.min.js"></script> </head> <body> <div id="page"> <div id="game"> <label>x:<input type="num" name="x"></label
>
<br> <label>y:<input type="num" name="y"></label><br> <label>n:<input type="num" name="n"></label><br> <label id="zhaohuan"><button>點選三次召喚神龍 ヾ(≧▽≦*)o</button></label> <div id="shenlong"> <label><input type="checkbox" name="checkbox">瘋狂模式</label> </div> <a href="javascript:;" name="start">Start! ( ‵▽′)ψ</a> </div> <div id="container"></div> </div> <div id="log"></div> </body> </html>

CSS

body {
    margin: 0;
    font-family: "Microsoft Yahei", "Helvetica";
    font-size: 1.2em;
}

input {
    text-align: center;
}

#page {
    min-width: 540px;
}

#game {
    width: 300px;
    min-width: 300px;
    margin: 20px auto 20px;
    padding: 10px 20px;
    border: 1px dotted #233;
    text-align: center;
}

#game a {
    display: inline-block;
    margin: 10px;
    padding: 10px 20px;
    text-decoration: none;
    background: #f64;
    color: #eee;
}

#container {
    text-align: center;
}

.box {
    display: inline-block;
    width: 40px;
    height: 40px;
    line-height: 40px;
    border: 1px solid #fff;
    background: #eee;
    cursor: pointer;
    text-align: center;
    vertical-align: middle;
}

.box:hover {
    background: #ccc;
}

#log {
    display: none;
    position: fixed;
    top: 0;
    right: 0;
    width: 500px;
    height: 300px;
    border: 1px solid #222;
    overflow: scroll;
    padding: 10px;
}

#shenlong {
    display: none;
}

JAVASCRIPT

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('4l(1O(p,a,c,k,e,r){e=1O(c){1U(c<a?\'\':e(25(c/a)))+((c=c%a)>35?28.2i(c+29):c.2l(36))};21(!\'\'.27(/^/,28)){26(c--)r[e(c)]=k[c]||e(c);k=[1O(e){1U r[e]}];e=1O(){1U\'\\\\w+\'};c=1};26(c--)21(k[c])p=p.27(2a 2Z(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);1U p}(\'$(O).18(8(){$("s[q=x]").u(10);$("s[q=y]").u(10);$("s[q=n]").u(10);$("a[q=J]").M(8(){4 a=C($("s[q=x]").u());4 e=C($("s[q=y]").u());4 c=C($("s[q=n]").u());5(a>20||e>20){z("2Y,31?\\\\n\\\\30,2V -。,- 2U");H}5(7.L>0){$("a[q=J]").K("2X")}4 b=N 1i(a,e,c);b.J()})});8 1i(a,c,b){2.x=a?a:10;2.y=c?c:10;2.n=b?b:10;2.m=N 13();2.F=[];16=2;2.J=8(){2.j("J()");$("#W").11("");2.12();$(".r").M(8(){4 e=$(2).1b("x"),f=$(2).1b("y");5(16.m[e][f]==-1&&7.Y){z("2W\\\\n\\\\39,38,3b 23(•̀ 1N •́ 23)");$("a[q=J]").M();H}7.Y=E;16.1c(e,f,$(2))})};2.12=8(){2.j("12()");9(4 h=0;h<2.x;h++){2.m[h]=N 13();2.F[h]=N 13();9(4 f=0;f<2.y;f++){2.m[h][f]=0;2.F[h][f]=0;4 k="<1n 1M=\\\'r\\\' x=\\\'"+h+"\\\' y=\\\'"+f+"\\\'><1n>";$("#W").1a(k)}$("#W").1a("<1L>")}9(4 h=0;h<2.n;h++){4 g=A.Q(A.R()*2.x);4 e=A.Q(A.R()*2.y);5(2.m[g][e]==0){2.m[g][e]=-1;5(7.1j){$(".r[x="+g+"][y="+e+"]").G({I:"1C",1h:"#19"})}}v{h--}}9(4 h=0;h<2.x;h++){9(4 f=0;f<2.y;f++){5(2.m[h][f]<0){(h-1>=0)&&(f-1>=0)&&(2.m[h-1][f-1]>=0)?2.m[h-1][f-1]++:0;(f-1>=0)&&(2.m[h][f-1]>=0)?2.m[h][f-1]++:0;(h+1<2.x)&&(f-1>=0)&&(2.m[h+1][f-1]>=0)?2.m[h+1][f-1]++:0;(h-1>=0)&&(2.m[h-1][f]>=0)?2.m[h-1][f]++:0;(h+1<2.x)&&(2.m[h+1][f]>=0)?2.m[h+1][f]++:0;(h-1>=0)&&(f+1<2.y)&&(2.m[h-1][f+1]>=0)?2.m[h-1][f+1]++:0;(f+1<2.y)&&(2.m[h][f+1]>=0)?2.m[h][f+1]++:0;(h+1<2.x)&&(f+1<2.y)&&(2.m[h+1][f+1]>=0)?2.m[h+1][f+1]++:0}}}};2.B=8(){2.j("B()");9(4 f=0;f<2.x;f++){9(4 e=0;e<2.y;e++){5(2.m[f][e]>0){$(".r[x="+f+"][y="+e+"]").K(2.m[f][e]);$(".r[x="+f+"][y="+e+"]").G({I:"#S"})}v{5(2.m[f][e]==0){$(".r[x="+f+"][y="+e+"]").G({I:"#S"})}v{5(2.m[f][e]==-1){$(".r[x="+f+"][y="+e+"]").K("X");$(".r[x="+f+"][y="+e+"]").G({I:"#1y",1h:"#19"})}}}}}z(7.B[7.L<7.B.1f?7.L:7.B.1f-1]);7.L++;H};2.1c=8(e,g,f){5(2.1g(e,g)){2.B()}v{5(2.m[e][g]!=0){2.F[e][g]=1;f.G({I:"#S"});f.K(2.m[e][g])}v{2.U(e,g)}}2.14()};2.1g=8(e,f){2.j(e+" "+f);5(2.m[e][f]<0){H 15}H E};2.U=8(f,n){f=C(f);n=C(n);4 h=(f-1>=0)?f-1:f;4 m=(f+1<2.x)?f+1:f;4 e=(n-1>=0)?n-1:n;4 l=(n+1<2.y)?n+1:n;2.j("U:"+f+" "+n);d=$(".r[x="+f+"][y="+n+"]");d.G({I:"#S"});2.F[f][n]=1;5(2.m[f][n]>0){d.K(2.m[f][n]);H}9(4 k=h;k<=m;k++){9(4 g=e;g<=l;g++){5(2.F[k][g]==0&&2.m[k][g]>=0){2.U(k,g)}}}};2.14=8(){2.j("14()");4 g=0;9(4 f=0;f<2.x;f++){9(4 e=0;e<2.y;e++){5(2.F[f][e]==0){g++}}}2.j("1x:"+g+"  n:"+2.n);5(g==2.n){z("1l 1m!")}};2.j=8(i){4 g=E;5(g){4 f=$("#j").11();f+="<p>"+i+"</p>";$("#j").11(f);$("#j").1s($("#j")[0].1q)}}}4 7={Y:15,L:0,B:["1o 1I","1r V B 2Q","e......(2P)","1t(2S) & 1u(2R) !","2N,2O","2L\\\\2M 1v!!1w","1k! 1e 1d 1z 1A 1B!\\\\17\\\'t 1D V 1E!!","1k 1F! 1e 1d 1G 1H 1p!\\\\17\\\'T 1J V 1o!! 1K!!","Z..","Z Z...","1l 1m.","22,2F"],1j:E,w:0,D:E};$(O).18(8(){$("#w").M(8(){7.w++;5(7.w==3){z("2G!2D。\\\\2E,2J,2K 2H(≧▽≦*)o")}v{5(7.w==6){z("2I!2T(24 °34 °;)24");$("#D").1P()}v{5(7.w>6&&7.w<=10){z("37━━∑( ̄□ ̄*|||━━32")}v{5(7.w>10){z("22,33 = = 3a");$("#D").1Q()}}}}});$("s[1R=1S]").M(8(){5(7.D==E){7.D=15}v{7.D=E}5(7.D){4 a=C($("s[q=x]").u());4 h=C($("s[q=y]").u());4 g=C($("s[q=n]").u());9(4 f=0;f<a;f++){9(4 c=0;c<h;c++){4 e=A.Q(A.R()*$(O).1T()/P);4 b=A.Q(A.R()*$(O).1V()/P);$(".r[x="+f+"][y="+c+"]").G({1W:"1X",1Y:e*P,1Z:b*P})}}}})});\',2h,2g,\'||2d||2k|21||2j|1O|2b||||||||||2e|||||||2c|2m|2x||2y|2v|2w|||2B|2C|2z|25|2A|2p|2q|2n|1U|2o|2t|2u|2r|2s|2a|2f|40|3R|3Q|3N||3M|3P|3O||42|41||44|43|3Z|3W|3X|3Y|3V|3T|3U|3S|4e|4h|4f|4g|4k|4i|4j|4d|47|48|45|46|4b|49|3n|3o|3l|3m|3s|3t|3q|3r|3e|3f|3d|3g|3j|3k|3i|3D|3E|3H|3K|3L|3I|3J|3w|3x|3v|3y|3B|3C|3z|3A|3u|3G|3F|3h|3c|3p|4a|\'.4c(\'|\'),0,{}))',62,270,'||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||function||||||return|||||||if|好吧|ლ|っ|parseInt|while|replace|String||new|for|name|this|log|document|125|62|fromCharCode|Config|var|toString|box|css|background|false|flag|ends|click|start|text|else|zhaohuan|input|val|end|shenlong|alert|Math|真聽話|n好了|你贏了|乖|ヾ|快看|認真點|你再點三次試試吧|還是你走吧|n這個遊戲不適合你|我走了|你自己玩吧|手動斜眼|你行不行|雞|菜|Σ|凸|你電腦會炸|你的運氣被狗吃了啊|1U一起1O|小夥子|RegExp|n不是我說你|你確定這麼大雷區|騷年|被你發現了|Д|||點多了不會隱藏的|看你這麼可憐|n好吧|其實可以隱藏|送你一次機會|absolute|will|count|f64|be|position|play|shutdown|green|haha|scrollTop|ShutDDDown|scrollHeight|left|Out|errrrr|vegetables|chicken|width|_|br|class|hi|type|checkbox|fadeIn|fadeToggle|Game|AGAIN|height|EveryBody|WILL|Play|Boy|BE|OVER|expand|ddd|container|the|random|floor|append|ready|fff|nDon|win|true|_0|Array||OK|first|generate|html|You|Win|mineVisible|Warning|GAME|top|div|split|Mine|attr|PC|Your|check|isMine|color|length|eval'.split('|'),0,{}))

相關推薦

Web 掃雷 JS實現

這幾天中毒了,無比迷戀掃雷遊戲(摔!明明是機房機器渣到只能玩掃雷),於是在上網路互聯與路由課的時候,寫了個Web版的掃雷遊戲,起碼能玩了,還在完善中,嘿嘿,晚上又增加了一些有趣的東東,還有個彩蛋。DEMO:http://imgbattle.cn/mine/ 其

web複習(三):js實現公告欄效果,間歇性滾動展示

使用js實現:公告欄間歇性展示效果 :思想,使用js操作,ul的scrollTop,並配合setTimeout和setInterval實現迴圈間歇滾動 程式碼:如下: <!DOCTYPE

js實現web網頁檯球遊戲

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="ht

JS實現懸浮導航的制作(附源碼)--web前端

pla char 控制 pos top -c 在哪裏 -a meta 思想:導航在這裏只有兩種狀態,一種是初始狀態、一種是固定布局狀態。實現懸浮導航其實就是通過Javascript腳本語言控制導航的兩種狀態,主要是對兩種狀態成立條件的判斷,明確了這些,實現起來就不會太難。

原生JS實現tab切換--web前端開發

soft 楊冪 microsoft hidden isp 老婆 tex oct rip tab切換非常常見,應用非常廣泛,比較實用,一般來說是一個網站必不可少的一個效果。例如:https://123.sogou.com/中的一個tab部分: 1、案例源代碼 <!DO

heartbeat v2CRM的高可用web集群的實現

heartbeat heartbeat v2 crm on上篇文章:heartbeat v1版CRM的高可用集群的實現集群架構圖 : 主節點(172.16.31.10)客戶端(172.16.31.12) Vitual IP(172.16.3

Html+JS+PowerShell打造WebAD管理系統(二)

跨域 owin powershell restful Webapi 最近發現gihub上早已有人把powershell的restful webapi做好了,而且是自宿主的owin。比上次用到的httplistener健壯許多。貌似還是支持job,runspace的。https://gith

require.js實現單頁web應用(SPA)

ble 簡單實用 net con lar avi github cal com 本文轉載自:https://blog.csdn.net/qq_33401924/article/details/53815922 移動端單頁應用基本上是做移動端最流行的的方式了,但是對於很多

js實現手機web頁面定位

<script type="text/javascript"> function Location() {}; Location.prototype.getLocation = function (callback) { var options = {

JS實現簡易備忘錄

1、概述 實現像手機便籤一樣功能的簡易版備忘錄頁面,該備忘錄全部用JQuery提供的功能實現,非常簡單易懂。 2、功能介紹 (1)簡潔的頁面,主介面僅提供兩個按鈕用於新增和刪除記錄; (2)新增完成的多條記錄,支援批量選擇刪除; (3)每條記錄支援點選行內進行修改; (4

微信小程式推廣二維碼海報Node.js實現

引言 最近公司的微信小程式專案由於業務需求需要實現二維碼推廣海報,而小程式的服務端程式碼是用node.js實現的,由於是第一次使用node.js作為服務端來實現圖片的相關處理,不免走了一些坑。所以為了避免大家也像我一樣花費不必要的時間爬坑,就將我再開發過程中遇到的一些過程記錄下來,供大家參考,水平有限,請相

使用webgl(three.js)搭建一個3D建築,3D消防模擬,web3D,bim管理系統——第四課

function getBuildFloorData() { var models = [{ "show": true, "uuid": "", "name": "m4_dtWall_1", "objType": "cube2", "length": 1000, "width": 200, "hei

vue.js實現選單導航欄(最終

效果: <template> <div class="layout-container"> <y-header> <div slot="nav"></div> </y-he

高德地圖web js實現畫多邊形,圓。判斷一個點是否在多邊形或圓裡

<!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge">

[Web Serial] 實現一份 Web 串列埠(除錯)助手

[Web Serial] 實現一份 Web 版串列埠(除錯)助手 [Web Serial] 實現一份 Web 版串列埠(除錯)助手 簡介 依賴 執行效果 專案實現教程

原生Js實現掃雷

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style&

使用RAP2和Mock.JS實現Web API接口的數據模擬和測試

優先級 規則 web前端 Mock.JS 集成 鏈接 生產 微信 應用 最近一直在思考如何對Web API的其接口數據進行獨立開發的問題,隨著Web API的越來越廣泛應用,很多開發也要求前端後端分離,例如統一的Web API接口後,Winform團隊、Web前端團隊、微信

使用RAP2和Mock.JS實現Web API介面的資料模擬和測試

最近一直在思考如何對Web API的其介面資料進行獨立開發的問題,隨著Web API的越來越廣泛應用,很多開發也要求前端後端分離,例如統一的Web API介面後,Winform團隊、Web前端團隊、微信小程式或者APP團隊大家可以同步開發,在最初約定一些介面的輸入JSON資料和輸出JSON資料,但是隨著專案的

ife 1 day web css/html/js初步瞭解 編碼實現第一個頁面

閱讀: Web 建站技術中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什麼? 什麼是 html:hyper text markup language;標記語言,告訴瀏覽器要如何渲染文字內容。html5:較新的標準

JS實現簡易貪吃蛇小遊戲(純js程式碼)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head&