温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言实现简单的扫雷小游戏代码分享

发布时间:2021-08-27 18:05:46 来源:亿速云 阅读:121 作者:chen 栏目:编程语言

本篇内容介绍了“C语言实现简单的扫雷小游戏代码分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

代码如下:

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <windows.h>#include <time.h>/* 用 C 语言写一个简单的扫雷游戏*/// 1.写一个游戏菜单 Menu()// 2.开始游戏 // 1.初始化二维数组 Init_Interface() // 2.打印游戏界面 Print_Interface() // 3.玩家掀起指定位置 Play() --> 指定输入坐标(判断合法性) // 1.判断该位置是否是雷 // 2.判断是否掀掉所有空地 // 3.如果掀开的是空地,则判断该空地周围是否有雷  // 1.如果周围有雷,则统计周围雷的个数  // 2.如果周围没有雷,则掀开周围除了雷的所有空地,并且统计所掀开空地周围雷的个数 // 4.更新地图 // 5.继续 3 的循环//定义全局变量://定义扫雷地图的长和宽#define MAX_ROW 9#define MAX_COL 9//定义默认的雷数#define DEFAULT_MINE 9//定义两个二维数组,分别存放初始地图和雷阵char show_map[MAX_ROW + 2][MAX_COL + 2];char mine_map[MAX_ROW + 2][MAX_COL + 2];//写一个游戏菜单int Menu() { printf("=========\n"); printf("1.开始游戏\n"); printf("0.结束游戏\n"); printf("=========\n"); printf("请选择游戏菜单选项:"); int choice = 0; while (1) { scanf("%d", &choice); if (choice != 0 && choice != 1) {  printf("您的输入有误, 请重新输入\n");  continue; } break; } return choice;}//开始游戏//初始化数组void Init_Interface() { for (int row = 0; row < MAX_ROW + 2; row++) { for (int col = 0; col < MAX_COL + 2; col++) {  show_map[row][col] = '*'; } } for (int row = 0; row < MAX_ROW + 2; row++) { for (int col = 0; col < MAX_COL + 2; col++) {  mine_map[row][col] = '0'; } } int mine_count = DEFAULT_MINE; while (mine_count > 0) { int row = rand() % MAX_ROW + 1; int col = rand() % MAX_COL + 1; if (mine_map[row][col] == '1') { //将雷设置为 1  //此处已经有雷  continue; } mine_count--; mine_map[row][col] = '1'; }}//打印初始界面void Print_Interface(char map[MAX_ROW + 2][MAX_COL + 2]) { printf("  "); for (int col = 1; col <= MAX_COL; col++) { printf("%d ", col); } printf("\n  "); for (int col = 1; col <= MAX_COL; col++) { printf("--"); } printf("\n"); for (int row = 1; row <= MAX_ROW ; row++) { printf("%02d |", row); for (int col = 1; col <= MAX_COL; col++) {  printf("%c ", map[row][col]); } printf("\n"); }}//写一个统计周围雷数个数的函数int Around_Mine_count(int row, int col) { return (mine_map[row - 1][col - 1] - '0' + mine_map[row - 1][col] - '0' + mine_map[row - 1][col + 1] - '0' + mine_map[row][col - 1] - '0' + mine_map[row][col + 1] - '0' + mine_map[row + 1][col - 1] - '0' + mine_map[row + 1][col] - '0' + mine_map[row + 1][col + 1] - '0');}//写一个判断该位置周围是否有雷的函数int No_Mine(int row, int col) { if (Around_Mine_count(row, col) == 0) { return 1; } return 0;}//写一个掀开该位置周围空地的函数void Open_Blank(int row, int col) { show_map[row - 1][col - 1] = '0' + Around_Mine_count(row - 1, col - 1); show_map[row - 1][col] = '0' + Around_Mine_count(row - 1, col); show_map[row - 1][col + 1] = '0' + Around_Mine_count(row - 1, col + 1); show_map[row][col - 1] = '0' + Around_Mine_count(row, col - 1); show_map[row][col + 1] = '0' + Around_Mine_count(row, col + 1); show_map[row + 1][col - 1] = '0' + Around_Mine_count(row + 1, col - 1); show_map[row + 1][col] = '0' + Around_Mine_count(row + 1, col); show_map[row + 1][col + 1] = '0' + Around_Mine_count(row + 1, col + 1);}//写一个判断游戏结束的函数int Success_Sweep(char show_map[MAX_ROW + 2][MAX_COL + 2]) { int count = 0; for (int row = 1; row <= MAX_ROW; row++) { for (int col = 1; col <= MAX_COL; col++) {  if (show_map[row][col] == '*') {  count++;  } } } if (count == DEFAULT_MINE) { return 1; } return 0;}//开始游戏void StartGame() { while (1) { printf("请输入您要掀开的坐标:"); int row = 0; int col = 0; while (1) {  scanf("%d %d", &row, &col);  if (row < 1 || row > MAX_ROW || col < 1 || col > MAX_COL) {  printf("您的输入有误,请重新输入!\n");  continue;  }  if (show_map[row][col] != '*') {  printf("该位置已被掀开,请重新选择\n");  continue;  }  break; } //判断该地方是否有雷 if (mine_map[row][col] == '1') {  Print_Interface(mine_map);  printf("该地方有雷,游戏结束!!!\n");  break; } if (No_Mine(row, col)) {  show_map[row][col] = '0';  Open_Blank(row, col); } show_map[row][col] = '0' + Around_Mine_count(row, col); //判断是否掀开所有空地 if (Success_Sweep(show_map) == 1) {  Print_Interface(mine_map);  printf("您已成功扫雷!!!\n");  break; } system("cls"); //更新地图 Print_Interface(show_map); }}int main() { if (Menu() == 0) { exit(0); } srand((unsigned int)time(NULL)); Init_Interface(); Print_Interface(show_map); StartGame(); system("pause"); return 0;}

“C语言实现简单的扫雷小游戏代码分享”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI