扫雷源代码(C语言)
生活随笔
收集整理的這篇文章主要介紹了
扫雷源代码(C语言)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
game.h:函數(shù)聲明
test.c:運(yùn)行測(cè)試
game.c:游戲核心代碼
game.h
#include<stdio.h> #include<stdlib.h> #include<time.h> #define easy_count 10//雷的個(gè)數(shù) #define ROW 9//棋盤大小 #define COL 9//宏定義方便后續(xù)增大或縮小棋盤 #define ROWS ROW+2 #define COLS COL+2 //初始化棋盤 void initboard(char board[ROWS][COLS], int rows, int cols,char set); //打印棋盤 void displayboard(char board[ROWS][COLS], int row, int col); //布置雷 void setmine(char board[ROWS][COLS], int row, int col); //排查雷 void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);test.c
#include"game.h" void menu() {printf("********************************\n");printf("********** 1.play ***********\n");printf("********** 0.exit ***********\n");printf("********************************\n"); } void game() {system("cls");//清屏char mine[ROWS][COLS] = { 0 };//存放布置好雷的信息char show[ROWS][COLS] = { 0 };//存放排查出雷的信息//初始化棋盤initboard(mine, ROWS, COLS, '0');initboard(show, ROWS, COLS, '*');//打印棋盤//displayboard(mine, ROW, COL);displayboard(show, ROW, COL);//布置雷setmine(mine, ROW, COL);//displayboard(mine, ROW, COL);//排查雷findmine(mine, show, ROW, COL); } int main() {int input;srand((unsigned int)time(NULL));do{menu();printf("請(qǐng)選擇:>\n");scanf("%d", &input);switch (input){case 1:printf("開始游戲\n");game();break;case 0:printf("退出游戲\n");break;default:printf("選擇錯(cuò)誤,請(qǐng)重新選擇\n");break;}} while (input); }game.c
#include"game.h" void initboard(char board[ROWS][COLS], int rows, int cols, char set) {int i, j;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){board[i][j] = set;}} } void displayboard(char board[ROWS][COLS], int row, int col) {int i, j;printf("----------掃雷游戲-----------\n");for (i = 0; i <= col; i++){printf("%d ", i);}printf("\n");for (i = 1; i <= row; i++){printf("%d ", i);for (j = 1; j <= col; j++){printf("%c ", board[i][j]);}printf("\n");}printf("----------掃雷游戲-----------\n");} void setmine(char board[ROWS][COLS], int row, int col) {//布置10個(gè)雷int count = easy_count;//產(chǎn)生隨機(jī)下標(biāo)while (count){int x = rand() % row + 1;int y = rand() % col + 1;//判斷當(dāng)前坐標(biāo)是否有雷if (board[x][y] == '0'){board[x][y] = '1';count--;}} } int get_mine_count(char mine[ROWS][COLS], int x, int y) {char num = '0';int i, j;for (i = -1; i <= 1; i++){for (j = -1; j <= 1; j++){num += mine[x + i][y + j];}}return num - 10 * '0'; } void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) {int x = 0;int y = 0;int win = 0;while(win<row*col-easy_count){printf("請(qǐng)輸入要排查的坐標(biāo):>");scanf("%d%d", &x, &y);//判斷坐標(biāo)合法性if (x >= 1 && x <= row && y >= 1 && y <= col){if (mine[x][y] == '1'){printf("很遺憾,你被炸死了\n");break;}else{//不是雷的情況下,判斷x,y周圍有幾個(gè)雷int count = get_mine_count(mine, x, y);show[x][y] = count + '0';//顯示排查到的信息displayboard(show, ROW, COL);win++;}}elseprintf("坐標(biāo)不合法\n");}if (mine[x][y] == '0')printf("恭喜你,你贏了\n");displayboard(mine, ROW, COL); }總結(jié)
以上是生活随笔為你收集整理的扫雷源代码(C语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python处理excel之替换功能
- 下一篇: 如何在Excel中用单元格中的单个空格替