用C语言编写扫雷

xiaoxiao2021-02-28  33

#define row 10 #define col 10 #define M 20 #include<stdio.h> #include<stdlib.h> #include<time.h> int menu() { printf("--------1、玩游戏--------\n"); printf("--------2、exit--------- \n"); printf("请选择>"); int i = 0; scanf_s("%d", &i); return i; } void init_board(char arr[row][col], char mind[row][col], int rows, int cols)//初始化数组 { int i = 0; int j = 0; for (i = 0; i < rows+1 ; i++) { for (j = 0; j < cols+1; j++) { arr[i][j] = '*'; mind[i][j] = '0'; } } } void display_board(char arr[row][col], int rows, int cols) { int i = 0; int j = 0; printf(" "); for (i = 1; i <cols+1; i++) { printf("%d ", i); } printf("\n"); printf(" ----------------------\n"); for (i = 1; i <row +1; i++) { printf("- | ", i); for (j = 1; j <col+1; j++) { printf("%c ", arr[i][j]); } printf("\n"); } } void set_mind(char mine[row][col], int rows, int cols)//设置雷的个数 { int x = 0; int y = 0; int i = 0; int ret = M; while (ret) { x = rand() % 10; y = rand() % 10; if (mine[x][y] == '0') { mine[x][y] = '1'; ret--; } } } int get_mine(char mine[row][col], int x, int y)//计算雷的个数 { int count = 0; if (mine[x - 1][y - 1] == '1') { count++; } if (mine[x - 1][y] == '1') { count++; } if (mine[x - 1][y + 1] == '1') { count++; } if (mine[x][y + 1] == '1') { count++; } if (mine[x + 1][y + 1] == '1') { count++; } if (mine[x + 1][y] == '1') { count++; } if (mine[x + 1][y - 1] == '1') { count++; } if (mine[x][y - 1] == '1') { count++; } return count; } void play_game(char arr[row][col], char mine[row][col])//排雷 { int x = 0; int y = 0; int count = 0; while (1) { printf("请输入坐标:"); scanf_s("%d %d", &x, &y); if (((0 < x) && (y <= 10)) && ((y > 0) && (x <= 10))) { if (mine[x][y] == '1') { printf("你被炸死了\n"); display_board(mine, row, col); break; } else { int ret = get_mine(mine, x, y); arr[x][y] = ret + '0'; if (ret == 0) { arr[x][y] = arr[x - 1][y - 1] = arr[x - 1][y] = arr[x - 1][y + 1] = arr[x][y - 1] = arr[x][y + 1] = arr[x + 1][y - 1] = arr[x + 1][y] = arr[x + 1][y + 1] = ' '; } count++; display_board(arr, row, col); if(count==M) { printf("恭喜你,赢了\n"); display_board(mine, row, col); break; } } } else printf("输入错误,重新输入"); } } void game() { char arr[row][col]; char mine[row][col]; int ret = 0; srand((unsigned)time(NULL)); init_board(arr, mine, row, col); //init_board(char arr[row][col], char mind[row][col], int rows, int cols) set_mind(mine, row, col); display_board(arr, row, col); play_game(arr, mine); } int main() { printf("扫雷游戏\n"); do { int choose = menu(); switch (choose) { case 1: game(); break; case 2: printf("退出游戏\n"); break; default: printf("输入错误,请重新输入\n"); } } while (1); system("pause"); return 0; }

转载请注明原文地址: https://www.6miu.com/read-2631226.html

最新回复(0)