學習了這么長時間的 JS,不能光看不練,於是就寫了個小游戲練習一下。因為自己還是個菜鳥,所以有錯誤的話還請各位大佬多多指點,謝謝啦~
如果感興趣的話可以試試:Demo
項目地址:game-mineSweepinng
效果圖
掃雷過程
掃呀掃呀掃個雷。
掃雷失敗
掃雷失敗就會提示掃雷失敗,然后逐步顯示出所有地雷(我會說我沒找到地雷的圖才用的炸彈嗎)。
掃雷成功
其實這里是有個動畫的,彩色方塊是逐步覆蓋全部格子的。
功能
實現的功能
基本掃雷的功能都實現了,例如:
- 計時
- 選擇游戲難度
- 標記地雷(插旗子標記地雷,標記之后不能點擊)
- 剩余雷數(總的雷數減去插旗的數量)
- 自動連鎖點開(當點開某個區塊后,如果該區塊的數字為 0,也就是九宮格內沒有雷,那么將自動點開九宮格內的所有區塊)
還做了點小彩蛋,例如:踩到地雷時,地雷會逐步顯示,還有成功掃到所有雷之后,地圖逐漸被彩色方塊覆蓋,然后提示掃雷成功。
沒有實現的功能
自定義,問號標記(偷懶了偷懶了,說不定以后會補上呢 (鬼才會信吧))。
知識點
都說寫東西學的最快,這句話是很有道理的。寫個小游戲,我又 Get 到了很多知識。
生成一張掃雷地圖
這里當然用的是數組啦,會玩掃雷的應該都懂,如果一個方塊塊有雷,那么邊上的值都加 1(就是根據這個掃的嘛~沒有這個還怎么玩)。我相信很多人是不會像看代碼的,所以我直接講我的思路。
- 根據行數和列數創建一個多維數組(使用 for 循環嵌套實現)
- 然后使用 Math 隨機 map[x][x] 來寫入雷的位置(再次使用 for 循環,寫入 9(9 就代表雷)),如果位置已經有雷了就重寫隨機然后寫入
- 然后我們就會得到一個這樣的數組,這個時候我們只需要讓 9 的四周加上 1
[ [0, 9, 0, 0],
[0, 0, 9, 0],
[9, 0, 9, 0],
[0, 9, 0, 0] ] - 得到這樣的數組,這樣就大功告成啦。
[ [1, 9, 2, 1],
[2, 4, 9, 2],
[9, 4, 9, 2],
[2, 9, 2, 1] ]
將地圖寫入頁面
使用 doucument.querySelector 獲取到元素節點,然后使用 innerHTML 就行了。(感覺自己說這兩句像是在放屁)。想了解的直接去 Github 看源碼把,一看就懂。
自動連鎖點開
這個比較難,想了挺久的。思路大概是這樣:
- 點擊到為 0 的位置,就自動顯示周圍一圈的位置。
- 然后周圍一圈的還有為 0 的位置,就繼續顯示周圍一圈,然后循環到沒有為止。