C语言实现小游戏——扫雷

C语言编写的有点粗糙,模拟的功能基本齐全,看见不足,还请赐教!
1.建立一个可以持续玩下去的框架

int main() { int input; srand((unsigned)time(NULL)); do { printf("******** 1.paay2.exit**********\n"); //菜单 scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("游戏退出\n"); break; default: printf("选择错误,请选择!\n"); break; } } while (input); return 0; }

2.框架完成后就该填充内容,完成game函数!
建立扫雷战场,初始化好
C语言实现小游戏——扫雷
文章图片

C语言实现小游戏——扫雷
文章图片

【C语言实现小游戏——扫雷】 C语言实现小游戏——扫雷
文章图片

下面就是设置雷的位置,采用随机函数和下标结合的手法,
C语言实现小游戏——扫雷
文章图片

扫雷过程,一步一次判断;
C语言实现小游戏——扫雷
文章图片

源代码如下:
#include #include #include #define ROW 9 #define COL 9#define ROWS ROW+2 #define COLS COL+2#define LEISHU 10void Initboard(char qi[ROWS][COLS], int row, int col, char set) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { qi[i][j] = set; } } }void printboard(char qi[ROWS][COLS], int row, int col) { for (int i = 0; i <= 9; i++) printf("%d ", i); printf("\n"); for (int i = 1; i <= row; i++) { printf("%d ", i); for (int j = 1; j <= col; j++) { printf("%c ",qi[i][j]); } printf("\n"); } }void setboard(char qi[ROWS][COLS], int row, int col) { int count =LEISHU; while (count) { //设置雷数组下标; int x = rand() % row + 1; int y = rand() % col + 1; if (qi[x][y] != '1') { qi[x][y] = '1'; count--; } } }void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int x, y; //数组行列坐标; while (1) { printf("请输入坐标:"); scanf("%d %d", &x, &y); if (mine[x][y] != '1') { //没有雷,打印show int count = (mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y - 1] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x + 1][y - 1] + mine[x + 1][y] - 8 * '0'); //除你在你输入坐标以外,周围8个含有地雷的个数 show[x][y] = count + '0'; printboard(show, ROW, COL); } else { printf("您被炸死了!\n"); break; } } printboard(mine, ROW, COL); //不管输赢这局结束后把显示雷的数组打印出来 }game() { char mine[ROWS][COLS] = { 0 }; //摆放雷的数组 char show[ROWS][COLS] = { 0 }; //排查雷的个数的数组 //初始化雷数组 Initboard(mine, ROWS, COLS, '0'); //初始化为零 Initboard(show, ROWS, COLS, '*'); //初始化为* //设置雷 setboard(mine, ROW, COL); printboard(show, ROW, COL); //排查雷 findmine(mine, show,ROW, COL); } int main() { int input; srand((unsigned)time(NULL)); do { printf("******** 1.paay2.exit**********\n"); //菜单 scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("游戏退出\n"); break; default: printf("选择错误,请选择!\n"); break; } } while (input); return 0; }


    推荐阅读