原生 JavaScript 實現掃雷


學習了這么長時間的 JS,不能光看不練,於是就寫了個小游戲練習一下。因為自己還是個菜鳥,所以有錯誤的話還請各位大佬多多指點,謝謝啦~

如果感興趣的話可以試試:Demo
項目地址:game-mineSweepinng

效果圖

掃雷過程

掃呀掃呀掃個雷。

掃雷失敗

掃雷失敗就會提示掃雷失敗,然后逐步顯示出所有地雷(我會說我沒找到地雷的圖才用的炸彈嗎)。

掃雷成功

其實這里是有個動畫的,彩色方塊是逐步覆蓋全部格子的。

功能

實現的功能

基本掃雷的功能都實現了,例如:

  • 計時
  • 選擇游戲難度
  • 標記地雷(插旗子標記地雷,標記之后不能點擊)
  • 剩余雷數(總的雷數減去插旗的數量)
  • 自動連鎖點開(當點開某個區塊后,如果該區塊的數字為 0,也就是九宮格內沒有雷,那么將自動點開九宮格內的所有區塊)

還做了點小彩蛋,例如:踩到地雷時,地雷會逐步顯示,還有成功掃到所有雷之后,地圖逐漸被彩色方塊覆蓋,然后提示掃雷成功。

沒有實現的功能

自定義,問號標記(偷懶了偷懶了,說不定以后會補上呢 (鬼才會信吧))。

知識點

都說寫東西學的最快,這句話是很有道理的。寫個小游戲,我又 Get 到了很多知識。

生成一張掃雷地圖

這里當然用的是數組啦,會玩掃雷的應該都懂,如果一個方塊塊有雷,那么邊上的值都加 1(就是根據這個掃的嘛~沒有這個還怎么玩)。我相信很多人是不會像看代碼的,所以我直接講我的思路。

  1. 根據行數和列數創建一個多維數組(使用 for 循環嵌套實現)
  2. 然后使用 Math 隨機 map[x][x] 來寫入雷的位置(再次使用 for 循環,寫入 9(9 就代表雷)),如果位置已經有雷了就重寫隨機然后寫入
  3. 然后我們就會得到一個這樣的數組,這個時候我們只需要讓 9 的四周加上 1
    [ [0, 9, 0, 0],
    [0, 0, 9, 0],
    [9, 0, 9, 0],
    [0, 9, 0, 0] ]
  4. 得到這樣的數組,這樣就大功告成啦。
    [ [1, 9, 2, 1],
    [2, 4, 9, 2],
    [9, 4, 9, 2],
    [2, 9, 2, 1] ]

將地圖寫入頁面

使用 doucument.querySelector 獲取到元素節點,然后使用 innerHTML 就行了。(感覺自己說這兩句像是在放屁)。想了解的直接去 Github 看源碼把,一看就懂。

自動連鎖點開

這個比較難,想了挺久的。思路大概是這樣:

  1. 點擊到為 0 的位置,就自動顯示周圍一圈的位置。
  2. 然后周圍一圈的還有為 0 的位置,就繼續顯示周圍一圈,然后循環到沒有為止。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM