第22章 C語言——掃雷(1 / 1)

要寫掃雷,首先要明白掃雷的玩法,掃雷,點開一個格子,沒有雷的話顯示周圍3*3除自己外八個格子的雷的數量(包含自己也行,畢竟自己這個格子也沒有雷)。   掃雷要寫兩個二維數組,一個小的展示,大的放雷。因為要檢測3*3,你掃到最邊上的雷,其實邊的外麵還有一個格子。   邏輯:定義兩個二維數組,放雷,顯示棋盤,掃雷,顯示周圍雷的數量,win   假如顯示的雷盤為9*9,則隱藏棋盤為11*11,因為左右上下各增加一行。   輸入坐標,如果隱藏雷盤對應的這個坐標上沒有雷,則把這個地方換成周圍格子雷的數量。   把棋盤初始化為0,放雷時把0更改為1。   如何放雷呢?x行y列為雷,則需要x和y都為隨機數,且x和y都在棋盤內。這時候又要運用到時間戳來隨機一個數了,隨機的數用餘數就行了。   隨機出x和y後,如果放10個雷,那麼就設定一個循環,放了一個就變9,直到放到10個減到0,為假,停止循環。   周圍格子雷的數量也很好判斷,用char來定義二維數組的話,每個元素都應該是“%c “,如果輸入的是字符0,則字符0的實際阿斯格碼值應該是48,字符1的阿斯格碼值為49,字符0減去字符0為0,字符1減去字符0為1,則用周圍八個數相加減去八個字符0就可以算出周圍八個格子上所含有的雷的數量。   然後就是win,可以先定義win為0,掃了一個win就加一次,直到掃完雷,也就是9*9-10,打印win。   更換難度:可以用#define來定義ROW和COL來便捷切換難度。   插旗子,玩真正的掃雷的時候,是可以插旗子的,如果想要插旗子也很簡單,用一個符號來代替旗子,然後更改顯示棋盤的某個元素就行了。   連鎖掃雷,玩掃雷時,會出現點開一個,周圍都沒有雷,結果一下空出一大片的情況。實現這個需要用到判斷周圍八個格子如果都沒有雷,則全都顯示出來,如果掃出來的格子周圍八個格子也都沒有雷,再全都顯示出來,用遞歸來實現這一功能。