用模块化思维方式打出扫雷游戏

改游戏的关键还是模块化的思维方式

先开始还是进行主页面的书写

用menu函数书写主页面

void menu(void){
printf("************************n");
printf("****  **1,play  ********n");
printf("********0,exit *********n");
printf("->");
return 0;}

用这个进行主页面的打印

进行游戏的判断(对与主页面的break也要注意不要省略)

用do {}while();进行实现

int main(void){
int input;
do{
menu(void);
scanf("%d",&input);
switch(input)
   case 1:
   game(void);
   break;
   case 0:
   printf("退出游戏")'
}while(input)
return 0;}

已经进入游戏中,具体步骤

首先进行数组和字符串的出

始化利用两组字符数组进行初始化!用函数简单化初初始化,减少自己的操作量!

void Initboard(char board[ROWS][COLS],int row,int col,char set){
    int i = 0;
    int j = 0;
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            board[i][j] = set ;
        }
    }
}

进行雷的布置(用自建的函数搞定)

坑人注意,小编用数字1代替了字符1!导致调试非常多时间没有搞定!

void Setmine(char mine[ROWS][COLS],int row,int col){
    int count = EASY_COUNT;
    while (count) {
        int x = rand()%row +1;
        int y = rand()%col +1;
        if (mine[x][y] == '0') {
            mine[x][y] =  '1';
            count--;
        }
    }
}

然后进行主界面的打印


void Displayboard(char board[ROWS][COLS],int row,int col){
    int i = 0;
    int j = 0;
    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");
    }
}

之后是进行排雷操作,而且带有胜利的高兴!

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col){//mine是雷的布局。show是主页面
    int x = 0;
    int y = 0;
    int win = 0;
    while (win < row*col-EASY_COUNT) {
        printf("请输入要排查的坐>>");
        scanf("%d %d",&x,&y);
        if (x  > 0 && x <= row &&y > 0 && y <= col) {
            if (mine[x][y] == '1') {
                printf("恭喜你被炸死n");
                Displayboard(mine, row, col);
                break;
            }
            else
            {
                int n = get_mine_count(mine,x,y);
                show[x][y] = n+'0';
                Displayboard(show, row, col);
                win++;
            }
                
        }
        else{
            printf("坐标错误,请重新输入n");
        }
          if (EASY_COUNT == win) {
            printf("恭喜你,排雷成功");
            Displayboard(mine, ROW, COL);
        }
    }
}

在这里有自定义一个函数用来计算周围的雷的个数!

int get_mine_count(char mine[ROWS][COLS],int x,int y){
    return mine[x - 1][y] +
    mine[x - 1][y - 1] +
    mine[x][y - 1] +
    mine[x + 1][y - 1] +
    mine[x + 1][y] +
    mine[x + 1][y + 1] +
    mine[x][y + 1] +
    mine[x - 1][y + 1] - 8*'0';
}

——————————————————————————————————————
上面是具体内容,不喜欢不要喷!这个不是复制其他人的,是自己做的!
如果喜欢给小编一个赞好吗?

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>