C语言编写一个简单的扫雷
生活随笔
收集整理的這篇文章主要介紹了
C语言编写一个简单的扫雷
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C語(yǔ)言編寫一個(gè)簡(jiǎn)單的掃雷
# include <stdio.h> # include <stdlib.h> # include <math.h> # include <time.h># define M 10//····豎坐標(biāo) # define N 20//····橫坐標(biāo) # define S 30//····地雷數(shù)量struct ZL {int x;int y; }zb[S];//·····坐標(biāo)值void MAP(int(*lei)[N + 2], int(*map)[N + 2]);//·····打印游戲界面 void LEI(int(*lei)[N + 2]);//····地雷界面int main() {int lei[M + 2][N + 2] = { 0 }, map[M + 2][N + 2] = { 0 };int i, j, m, n, x, y, s, t;LEI(lei);while (1) {s = 0;MAP(lei, map);printf("\n請(qǐng)輸入坐標(biāo)(格式:X空格Y):\n");scanf("%d%d", &m, &n);if (m > M || n > N) {continue;}if (lei[m][n] == 1) {system("cls");for (i = 0, x = -1; i <= 2 * (M + 1); i++) {if (i % 2 == 0) {x++;}for (j = 0, y = -1; j <= 2 * (N + 1); j++) {if (j % 2 == 0) {y++;}if ((i == 0 || i == 2 * (M + 1)) && (j == 0 || j == 2 * (N + 1))) {printf("+");if (i == 0 && j == 2 * (N + 1)) {printf("------y");}}else {if (i % 2 == 0) {if (j % 2 == 0) {printf("-");}else {printf("---");}}else {if (j % 2 == 0) {printf("|");}else {if (i == 1) {printf("%-3d", (j - 1) / 2);}else if (j == 1) {printf("%-3d", (i - 1) / 2);}else {if (lei[x][y] != 1) {printf(" %d ", lei[x][y] / 2);}else {printf(" * ");}}}}}}printf("\n");}printf("|\n|\n|\nX\n\n\n\t\tGame Over!\n");break;}else {map[m][n] = 1;while (1) {t = 1;for (i = 1; i < M + 2; i++) {for (j = 1; j < N + 2; j++) {if (map[i][j] == 1 && lei[i][j] == 0) {if (i - 1 != 0 && j - 1 != 0 && map[i - 1][j - 1] != 1) {map[i - 1][j - 1] = 1;t = 0;}if (i - 1 != 0 && map[i - 1][j] != 1) {map[i - 1][j] = 1;t = 0;}if (i - 1 != 0 && j + 1 != N + 1 && map[i - 1][j + 1] != 1) {map[i - 1][j + 1] = 1;t = 0;}if (j - 1 != 0 && map[i][j - 1] != 1) {map[i][j - 1] = 1;t = 0;}if (j + 1 != N + 1 && map[i][j + 1] != 1) {map[i][j + 1] = 1;t = 0;}if (i + 1 != M + 1 && j - 1 != 0 && map[i + 1][j - 1] != 1) {map[i + 1][j - 1] = 1;t = 0;}if (i + 1 != M + 1 && map[i + 1][j] != 1) {map[i + 1][j] = 1;t = 0;}if (i + 1 != M + 1 && j + 1 != N + 1 && map[i + 1][j + 1] != 1) {map[i + 1][j + 1] = 1;t = 0;}}}}if (t == 1) {break;}}}for (i = 1; i < M + 1; i++) {for (j = 1; j < N + 1; j++) {if (map[i][j] == 0) {s++;}}}if (s == S) {printf("\t\t恭喜你成功了!!!\n");break;}}return 0; }//·····打印游戲界面 void MAP(int(*lei)[N + 2], int(*map)[N + 2]) {int i, j, x, y;system("cls");for (i = 0, x = -1; i <= 2 * (M + 1); i++) {if (i % 2 == 0) {x++;}for (j = 0, y = -1; j <= 2 * (N + 1); j++) {if (j % 2 == 0) {y++;}if ((i == 0 || i == 2 * (M + 1)) && (j == 0 || j == 2 * (N + 1))) {printf("+");if (i == 0 && j == 2 * (N + 1)) {printf("------y");}}else {if (i % 2 == 0) {if (j % 2 == 0) {printf("-");}else {printf("---");}}else {if (j % 2 == 0) {printf("|");}else {if (i == 1) {printf("%-3d", (j - 1) / 2);}else if (j == 1) {printf("%-3d", (i - 1) / 2);}else {if (map[x][y] == 1) {printf("%-3d", lei[x][y] / 2);}else {printf("[*]");}}}}}}printf("\n");}printf("|\n|\n|\nX\n"); }//······················生成地雷地圖 void LEI(int(*lei)[N + 2]) {int i, j, x, y;srand(time(NULL));for (i = 0; i < S; i++) {//··········生成地雷坐標(biāo)x = zb[i].x = abs(rand() % M) + 1;y = zb[i].y = abs(rand() % N) + 1;if (lei[x][y] == 1) {i--;continue;}lei[x][y] = 1;//printf("%-5d%-5d\n", zb[i].x, zb[i].y);}for (i = 1; i <= M; i++) {//·········生成地雷周圍數(shù)字for (j = 1; j <= N; j++) {if (lei[i][j] == 1) {continue;}if (lei[i - 1][j - 1] == 1) {lei[i][j]++;}if (lei[i - 1][j] == 1) {lei[i][j]++;}if (lei[i - 1][j + 1] == 1) {lei[i][j]++;}if (lei[i][j - 1] == 1) {lei[i][j]++;}if (lei[i][j + 1] == 1) {lei[i][j]++;}if (lei[i + 1][j - 1] == 1) {lei[i][j]++;}if (lei[i + 1][j] == 1) {lei[i][j]++;}if (lei[i + 1][j + 1] == 1) {lei[i][j]++;}lei[i][j] *= 2;}} }總結(jié)
以上是生活随笔為你收集整理的C语言编写一个简单的扫雷的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据库管理哪家强?Devart VS N
- 下一篇: 2021中国留学白皮书——附下载链接