1.在game.h中進行巨集定義,標頭檔案引入以及函式宣告
2.在main.c中實現主函式
3.在game.c中實現功能函式
除了基本的功能外,還實現以下幾個功能:
1.第一步不會炸
2.點到周圍沒有雷的區域會自動展開
3.可以做標記
4.顯示當前雷數
5.顯示已用時間
待拓展的功能:選關
需要定義兩個二維陣列,乙個作為記錄雷的位置,乙個作為展示介面,除此之外,實際定義的陣列應比展示出來的介面大一圈,這樣便於統計雷數
void setmine(char board[rows][cols], int row, int col)
}
在棋盤內隨機選取10個位置埋雷。
用到了rand()函式生成偽隨機數,使用rand函式前應先呼叫srand()喚醒,並用時間做引數。
int getminecount(char board[rows][cols],location loc)
}return
count;
}
int sweepmine(char show[rows][cols],char mine[rows][cols], int rows, int cols, location loc,int *pfirst)
//如果是第一步
if ((*pfirst) == 1) while (mine[loc.x][loc.y] == '1');
}if (mine[loc.x][loc.y] == '1')
else
return
1;}
void expand(char show[rows][cols], char mine[rows][cols],int row, int col, location loc)
; if (show[loc.x][loc.y] != '*')
return;
if (getminecount(mine, loc) == 0)
else show[i][j] = ret + '0';}}
}}
如果點到雷數是0的位置,就遞迴,展開到座標雷數不是0(第乙個不是0的位置也顯示出來)
第一步下的是(5,5),顯示雷數1,然後第二步是(9,9),雷數是0自動展開,直到雷數不是0
int label(char show[rows][cols], int
rows, int cols, location loc,int *pflag)
if (show[loc.x][loc.y] == '*')
else if (show[loc.x][loc.y] == 'x')
else
printboard(show, rows, cols);
return 1;
}
如果有標記就取消,如果沒有標記就做標記
不知道大家是怎麼做的,我設定的是做乙個標記雷數就減一
這個用clock()函式就能實現,具體是,定義三個變數
clock_t start, finish;
double time;
在剛剛進入遊戲時,
start = clock();
clock函式返回開啟這個程序到呼叫clock()函式的cpu時鐘單元
結束時間也是這樣,
finish = clock();
time = (double)(finish - start) / clocks_per_sec;//巨集表示一秒鐘有多少時鐘單元
每次展開乙個座標就顯示一次雷數和時間
printf("\n 當前雷數:%d 已用時:%.0f s\n",easy_count-flag,time);
當玩家選中有雷座標時就輸了
判斷獲勝會麻煩一點
//檢視當前顯示格仔數目
int checkmine(char show[rows][cols], char mine[rows][cols], int rows, int cols)
}return count;
}
函式名字起的比較糟糕,功能是返回當前顯示出來格仔的數目
當所有不是雷的格仔都顯示出來時,玩家就獲勝了
剛剛讓舍友玩了一局,她說介面太花了。。。這個是最需要改進的,目前我也沒辦法。。。
二維陣列應用 掃雷
遊戲簡介 電腦隨機設定10個雷,使用者輸入座標,若座標下是雷則結束遊戲,不是則該位置顯示周圍的雷數。game.h ifndef game h define game h include 設定螢幕顯示的雷盤的大小 define row 9 define col 9 設定實際雷盤的大小 判斷雷數是看使用...
C語言陣列應用的簡單應用 掃雷遊戲
1.掃雷遊戲 c初學者的簡單版本 實現 難度選擇,不同的雷數的計算方法產生不同的難度 第一次踩到雷不會跳出 如果座標周圍沒有雷的時候,擴充套件座標。源 game.h 檔名稱 排雷遊戲 當前版本 1.1 完成日期 2018年4月23日 取代版本 1.0 ifndef game h define gam...
陣列的應用
設5 個同學修了高等數學 普通物理 程式語言並取得了成績,現計算三門課總分 平均分,每門課的總分 平均分,每個同學的總分 平均分 include int main void int physics int programming int ttscore,scoret 5 tscore 3 float...