用C语言简单的实现扫雷
先进行定义
#define ROWS 11 #define COLS 11 #define ROW 9 #define COL 9
一.游戏菜单
void menu() { printf("****************************************** "); printf("******************1.play****************** "); printf("******************0.exit****************** "); printf("****************************************** "); }
二.玩家进行选择
do { printf("请做出选择->"); scanf("%d", &n); switch (n) { case 1: game(); break; case 0: printf("退出程序 "); break; default: printf("选择错误,请重新输入"); break; } } while (n);
三.创建以及初始化棋盘
void game() { char board[ROWS][COLS], show[ROWS][COLS]; } void init(char board[ROWS][COLS], int rows,int cols,char x) { int a, b; for (a = 0; a < rows; a++) { for (b = 0; b < cols; b++) { board[a][b] = x; } } } init(board, ROWS, COLS, 0); init(show, ROWS, COLS, *);
四.打印棋盘
void print(char board[ROWS][COLS], int row, int col) { int a, b; for (b = 0; b <= col; b++) { printf("%d ", b); } printf(" "); for (a = 1; a <= row; a++) { printf("%d ", a); for (b = 1; b <=col; b++) { printf("%c ", board[a][b]); } printf(" "); } }
五.放置雷
void put(char board[ROWS][COLS], int row, int col) { int sum = MINE; while (sum) { int x = rand() % row + 1; int y = rand() % col + 1; if (board[x][y] == 0) { board[x][y] = 1; sum--; } } }
六.玩家进行扫雷
int sweep_mine(char board[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int x, y; printf("请输入坐标->"); scanf("%d%d", &x, &y); if (x > 0 && x <= row && y > 0 && y <= col) { s=judge(board, show, x, y); } else { printf("请输入正确的坐标->"); } return s; } int judge(char board[ROWS][COLS], char show[ROWS][COLS], int x, int y) { int a = 0, b = 0, sum = 0; if (x <= 0 || y <= 0 || x > 9 || y > 9||board[x][y]==q) { return s; } else if (board[x][y] == 1) { return -1; } else { a = x - 1; b = y - 1; for (a=x-1; a <= x + 1; a++) { for (b=y-1; b <= y + 1; b++) { if (board[a][b] == 1) { sum++; } } } if (sum != 0) { show[x][y] = 0 + sum; s--; } else { show[x][y] = ; for (a = x - 1; a <= x + 1&&a<=ROW&&a>0; a++) { for (b=y-1; b <= y + 1&&b<=COL&&b>0; b++) { show[a][b] = ; s--; board[x][y] = q; judge(board, show, a, b); } } } } }
七.判定是否成功
while (s>0) { print(show, ROW, COL); s=sweep_mine(board, show, ROW, COL); } if (s == 0) { printf("扫雷成功 "); printf("下面是雷图 "); print(board, ROW, COL); } else { printf("你被炸死了 "); printf("下面是雷图 "); print(board, ROW, COL); }
下一篇:
Java修改图片元数据Exif信息