您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 山南分类信息网,免费分类信息发布

c语言简单小游戏-扫雷游戏

2025/8/9 1:27:45发布4次查看
这篇文章主要为大家详细介绍了c语言实现简单扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
c语言简单小游戏-扫雷
本文实例为大家分享了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语言教程,推荐观看c语言视频教程!
以上就是c语言简单小游戏-扫雷游戏的详细内容。
山南分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product