掃雷程式思想講解 (轉)
掃雷思想講解
在我大二的時候就編寫了一個掃雷程式,現在也有很多
源程式,我不知道他們的演算法是怎麼樣的,但我想我的
演算法應是最清晰和簡單的。下面就來講解我的掃雷程式思想。
首先我們在雷區上隨機地放上雷,沒有雷的地方被點選
後就會顯示一個數字表示它周圍有幾個雷,這是怎麼實現的
呢?我們可以把整個雷區看成一個二維陣列a[i,j],如雷區:
11 12 13 14 15 16 17 18
21 22 23 24 25 26 27 28
31 32 33 34 35 36 37 38
41 42 43 44 45 46 47 48
51 52 53 54 55 56 57 58
我要知道a[34]周圍有幾個雷,就只有去檢測
a[23],a[24],a[25]
a[33], a[35]
a[43],a[44],a[45]
這8個雷區是否放上了雷,仔細觀察它們成在數學關係。
抽象出來就是:a[i,j]的雷的個數就是由
a[i-1,j-1],a[i-1,j],a[i-1,j+1]
a[ i ,j-1], a[ i ,j+1]
a[i+1,j-1],a[i+1,j],a[i+1,j+1]
(如果超出邊界再加以判斷)
這樣的8個雷區決定的。
掃雷程式還會自動展開已確定沒有雷的雷區。如果
a[3,4]周圍雷數為1,a[2,3]已被標示為地雷,那麼
a[24],a[25],a[33],a[35],a[43],a[44],a[45]
將被展開,一直波及到不可確定的雷區。這也是實現的
關鍵。我們可以把陣列的元素設定為一個類,它們
所屬的類設定這樣的一個事件:在被展開時,檢查周圍
的雷數是否與周圍標示出來的雷數相等,如果相等則展
開周圍未標示的雷區。這樣新的雷區展開又觸發這個事
件,就這樣遞迴下去,一直蔓延到不可展開的雷區。
相信在瞭解以上兩個要點後,把雷區這個類編寫完全
(如新增是否有雷標記,是否展開標記,周圍雷數等,雙
擊,左右單擊的滑鼠事件等),實現掃雷程式應是十分簡
單的一件事。
zg
to:nozg@263">nozg@263.net
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-996479/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動掃雷程式
- java掃雷遊戲程式碼Java遊戲
- J2ME偽高手先鋒開講:掃雷遊戲的設計(轉)遊戲
- JS實現掃雷JS
- python之掃雷小遊戲(附程式碼)Python遊戲
- 《魔窟掃雷》給掃雷遊戲指明瞭一個進化的方向遊戲
- 用ncurses庫寫掃雷
- win10有掃雷嗎?Win10系統掃雷遊戲在哪裡Win10遊戲
- 生成一個掃雷矩陣矩陣
- 掃雷小遊戲-網頁版遊戲網頁
- 經典掃雷遊戲Web版遊戲Web
- 掃雷--C語言實現C語言
- 掃雷遊戲作弊逆向菜文遊戲
- go語言實現掃雷Go
- win10如何安裝掃雷遊戲_win10系統怎麼玩掃雷Win10遊戲
- Java Swing掃雷遊戲demo分享Java遊戲
- python寫的自動掃雷Python
- win10掃雷怎麼換主題 如何更換win10的掃雷主題Win10
- 多重揹包二進位制分解思想講解
- 小馬哥講Spring核心程式設計思想01Spring程式設計
- 安全測試之探索 windows 遊戲掃雷Windows遊戲
- Qt學習- (掃雷專案初學)QT
- CSS3雷達掃描效果CSSS3
- win10沒有掃雷遊戲怎麼辦_win10自帶遊戲沒有掃雷如何解決Win10遊戲
- 埠掃描工具nmap的常用引數講解
- 探秘掃雷遊戲的C語言實現遊戲C語言
- Android自定義View 雷達掃描效果AndroidView
- 軟體開發其實就像工兵掃雷
- 專業掃雷v1.2版破解分析
- 詳細講解DirectDraw程式設計基礎(轉)程式設計
- java程式設計思想之註解Java程式設計
- 厲害了,一個自動掃雷遊戲專案!遊戲
- Linux下的6個掃雷遊戲的翻版Linux遊戲
- 雷達氣象相關詞彙(一 掃描模式)模式
- XML 程式設計思想:XML語義(轉)XML程式設計
- html meta 元素講解(轉)HTML
- 通過編寫掃雷遊戲提高你的 Bash 技巧遊戲
- Python3+pygame實現Windows經典掃雷PythonGAMWindows