要求:
1:第一下輸入座標,不炸死。
2:座標周圍沒有雷,可以實現展開。
思想:
(一)用乙個測試函式test()完成使用者的整個遊戲體驗,放在主函式中。
(二)test()函式中應該完成的內容:選單選擇和遊戲部分。
選單選擇即menu()函式;
遊戲部分即game()函式;
因為是遊戲,所以以使用者體驗為先,先讓使用者玩一把。在這應該使用do…while()語句。
!!!
(三)game()函式的具體實現:
同三子棋遊戲,給game函式單獨建立乙個原始檔。
掃雷遊戲的思想:
首先需要乙個雷盤存放雷;
1,雷盤有行和列,因此應該定義乙個二維陣列。row為行,col為列。
在掃雷的過程中,如果選擇乙個座標,則會計算周圍座標的雷數。如果輸入座標為(0,0),則該座標周圍並非都是座標,無法計算,因此在設計雷盤時應該大一圈。定義為mine[rows][cols],定義rows=row+2,cols=col+2。
雷盤陣列——mine[rows][cols]
2,當輸入乙個座標時,會計算周圍座標的雷數,如果把計算後的雷數直接放在雷盤中,則下乙個座標計算時就會出錯,因此應該定義乙個新的陣列用來存放雷的資訊information[rows][cols]。該陣列應該和雷盤陣列一樣大。
存放雷資訊的陣列——information[rows][cols]
3,兩個陣列中都存放字元。
4,給兩個陣列賦初值。——initfirst()
5,布雷——setmine()
6,展示雷盤陣列,展示資訊陣列——display()
7,排查雷——fimdmine()
排查雷的過程中:
需要乙個函式實現計算該座標周圍雷數——minecount()
輸入乙個座標,座標周圍沒有雷,實現座標展開 ——openmine()
如果輸入的第乙個座標為雷,不能讓使用者被炸死,轉移雷的位置
——firstmine()
具體**如下:
1:將所有的重定義,函式宣告,引用的標頭檔案放在建立的標頭檔案中
#ifndef __game__h__
#define __game__h__
#define row 9
#define col 9
#define rows row + 2
#define cols col + 2
#define count 10
#include #include #include void initfirst(char arr[rows][cols], int rows, int cols,char set);
void setmine(char mine[rows][cols], int row, int col);
void display(char arr[rows][cols], int row, int col);
void fimdmine(char mine[rows][cols],char information[rows][cols], int row, int col);
int minecount(char mine[rows][cols], int x, int y);
void firstmine(char mine[rows][cols], int i, int j);
void openmine(char mine[rows][cols], char information[rows][cols], int x, int y);
#endif __game__h__
2,主函式部分**如下
#define _crt_secure_no_warnings
#include "game.h"
//列印選單
void menu()
//遊戲部分
void game()
; char information[rows][cols] = ;
//給兩個陣列分別賦初值
initfirst(mine, rows, cols,'0');
initfirst(information, rows, cols,'*');
//布雷
setmine(mine,row,col);
//列印雷盤
display(mine, row, col);
display(information, row, col);
//排查雷
fimdmine(mine, information, row, col);
}//測試函式
void test()
} while (input);
}int main()
3,遊戲部分**如下
//掃雷遊戲
#define _crt_secure_no_warnings
#include "game.h"
//賦初值
void initfirst(char arr[rows][cols], int rows, int cols, char set) }}
//布雷
void setmine(char mine[rows][cols], int row, int col)
} }}//展示布局,可展示雷盤,也可展示資訊盤,根據情況而定
void display(char arr[rows][cols], int row, int col)
printf("\n");
for (i = 1; i <= row; i++)
printf("\n"); }}
//保證第一下不被炸死,如果輸入的第乙個座標是雷,則交換雷的位置,將乙個非雷與雷交換
void firstmine(char mine[rows][cols], int i, int j)
} }}//計算該座標周圍雷的個數
int minecount(char mine[rows][cols], int x, int y)
//若輸入座標周圍雷數為0,則展開周圍一周,直至雷數為0
void openmine(char mine[rows][cols],char information[rows][cols], int x, int y)}}
} else
}}//排查雷
void fimdmine(char mine[rows][cols], char information[rows][cols], int row, int col)
else
}else}}
display(information, row, col);
}} else
if (win == row*col - count)
}}
C語言 掃雷遊戲
標頭檔案 ifndef mine h define mine h define line 10 define list 10 define rows 6 define cows 6 int game char userboard line 2 list 2 char playerboard line...
掃雷遊戲C語言
掃雷遊戲c語言 include include include define max row 9 define max col 9 define max mine count 10 char mine map max row max col 雷的位置 char show map max row ma...
C語言 掃雷遊戲
簡單描述 輸入要要掃的位置.如果是雷,則遊戲失敗.如果將所有不是雷的位置都掃了一遍,則遊戲勝利.主要細節 初始化 玩家掃雷圖,地雷布局圖 for int row 0 row row row for int row 0 row row row int count 0 while count 列印地圖 ...