本文实例为大家分享了C语言实现扫雷游戏及其优化的具体代码,供大家参考,具体内容如下

关于扫雷优化

1.核心思想:使用两个二维数组进行设计,一个用于显示,一个用于后台雷的布置。

2.使用宏常量,后期可以任意修改游戏难度。

3.关于扫雷拓展模块,目前使用的方法比较low,若周围均没有,则全部显示。

4.剩余位置数使用全局变量count,必须考虑拓展之后count变化。

有待改进之处

1.需设计标记雷的步骤,增加用户体验。

2.拓展方式有待改进。

3.界面布局仍需要进行优化。

这里推荐一下我建的C/C++语言学习交流秋秋裙,秋秋搜索群名称:小凯C/C++语言学习之家,裙里有不错的学习教程,从入门到项目实战。学习开发用到的开发工具,项目源码等,专业的老师解答学习问题。您在学习过程中有不懂的可以加入一起交流,对你学习C/C++语言会有很大帮助!

扫雷游戏代码

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<string.h>
#include<time.h>
#define ROW 12
#define COL 12
#define MINE_NUM 15
#define TOTAL 100
#pragma warning(disable:4996)
int count = TOTAL;
void inter(){printf("=======================n");printf("=======游戏菜单========n");printf("======1.开始游戏=======n");printf("========2.退出=========n");printf("=======================n");printf("请输入您的选择: n");
}
int GetRandIndex(int start, int end){return rand() % (end - start + 1) + start;
}
void layout(char mine[][COL], int row, int col){srand((unsigned long)time(NULL));int count = 0;while (count<MINE_NUM){int x = GetRandIndex(1, 10);int y = GetRandIndex(1, 10);if (mine[x][y] == '0'){mine[x][y] = '1';count++;}}
}void Board(char board[][COL], int row, int col){printf(" ");int i = 1;for (; i <= 10; i++){printf(" %d ", i);}printf("n----");for (i = 1; i <= 29; i++){printf("-");}printf("n");for (i = 1; i <= 10; i++){printf("%2d|",i);int j = 1;for (; j <= 10; j++){printf(" %c|", board[i][j]);}printf("n");int k = 1;for (k = 1; k <= 11; k++){printf("---");}printf("n");}}char GetMines(char mine[][COL],int row,int col){return mine[row - 1][col - 1] + mine[row - 1][col] + mine[row - 1][col + 1]+ mine[row][col - 1] + mine[row][col + 1]+ mine[row + 1][col - 1] + mine[row + 1][col] + mine[row +1][col + 1]-7*'0';
}
void expand(char mine[ROW][COL], char board[ROW][COL], int x, int y){if ((x >= 1) && (y >= 1) && (x <= ROW) && (y <= COL)){if (GetMines(mine, x, y) == '0'){if (x > 1 && x < 10 && y>1 && y < 10){count = count - 8;}else if((x==1&&y==1)||(x==10&&y==10) || (x == 1 && y == 10) || (x == 10 && y == 1)) {count -= 3;}else {count -= 5;}board[x - 1][y - 1] = GetMines(mine, x-1, y-1);board[x - 1][y] = GetMines(mine, x - 1, y);board[x - 1][y + 1] = GetMines(mine, x - 1, y + 1);board[x][y - 1] = GetMines(mine, x , y - 1);board[x][y + 1] = GetMines(mine, x , y + 1);board[x + 1][y - 1] = GetMines(mine, x + 1, y - 1);board[x + 1][y] = GetMines(mine, x + 1, y);board[x + 1][y + 1] = GetMines(mine, x + 1, y + 1);}}
}
void Game(){char mine[ROW][COL]; char board[ROW][COL]; memset(mine,'0',sizeof(mine));memset(board, '*', sizeof(board));layout(mine, ROW, COL);Board(mine, ROW, COL);int x = 0;int y = 0;while (1){int i = 0;Board(board, ROW, COL);printf("请选择您要排除的位置: ");scanf("%d %d", &x, &y);if (x >= 1 && x <= ROW - 2 && y >= 1 && y <= COL - 2){if (mine[x][y] == '0'){char num = GetMines(mine,x,y);board[x][y] = num;expand(mine, board, x, y);Board(board, ROW, COL);count--;if (count == MINE_NUM){Board(board, ROW, COL);printf("你赢了!n");break;}}else{printf("您输了!n");Board(mine, ROW, COL);break;}printf("还有%d个位置 n", count);}else{printf("你输入的坐标有误,请重新输入!n");}}
}
int main(){int quit = 0;int select = 0;while (!quit){inter();scanf("%d", &select);switch (select){case 1:Game();Sleep(5000);system("cls");break;case 2:printf("再见!n");quit = 1;break;default:printf("您的输入不正确,请重新输入!n");break;}}system("pause");return 0;
}

相关运行样例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多关注支持。

c++扫雷游戏代码_C语言学习教程,用C语言编写扫雷游戏相关推荐

  1. C语言学习教程:搬山游戏开发源码

    C语言学习教程:搬山游戏开发源码 #include<stdio.h> void main() {int n,k,x,y,cc,pc,g;clrscr();puts("****** ...

  2. C语言学习教程:超级玛丽游戏开发源码分享

    C语言学习教程:超级玛丽游戏开发源码分享 这里推荐一下我建的C/C++语言学习交流秋秋裙,秋秋搜索群名称:小凯C/C++语言学习之家,裙里有不错的学习教程,从入门到项目实战.学习开发用到的开发工具,专 ...

  3. iOS开发Swift语言学习教程-欧阳坚-专题视频课程

    iOS开发Swift语言学习教程-16345人已学习 课程介绍         Swift这套视频是针对有Objective-C/iOS基础,想转成Swift开发的学习视频,视频中从Swift语法,结 ...

  4. Maya游戏角色骨骼绑定学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:5.77 GB |时长:6h 24m 向 ...

  5. 最新go语言学习教程

    go语言学习教程 集合了连接go routine.go连接redis.go连接kafka等示例,所有代码均经过实践,可以直接使用 GitHub - fastbpmn/go-study: go语言的个人 ...

  6. ue4 开发动作游戏_ue4游戏开发虚幻4学习教程资源素材合集

    虚幻4 ue4商城 ue4场景 素材 模型 动作 蓝图 动画 2019最新超值合集资源包 游戏开发 2019最全素材 包含虚幻中国 荒岛求生案例视频教程 和官方中文翻译教程 UE4官方商城精品合集!含 ...

  7. 绘画武器设计教程,游戏CG原画学习教程之高级武器设计!

    游戏CG原画学习教程之高级武器设计,绘画武器设计教程! 第一章:金箍棒与降魔杵的设计视频地址:http://www.qingwk.com/course/detail/22 装备类游戏道具一般可以分为武 ...

  8. Go语言学习教程(十一)

    一.结构体指针 * 由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用时结构体指针完成 * 可以结合new(T)函数创建结构体指针 peo := new(People) //因为结构体本质是 ...

  9. 转 LUA语言学习教程

    转 LUA语言学习教程 写在最前面,为什么要了解LUA语言?因为WOW的宏甚至插件的编写都离不开LUA!功欲擅其事,必先利其器,如果想玩转魔兽世界,而不是被魔兽世界玩的话,先来学习一下LUA语言吧! ...

  10. LUA语言学习教程(转)

    转自:http://www.cnblogs.com/chuncn/archive/2010/07/03/1770464.html 写在最前面,为什么要了解LUA语言?因为WOW的宏甚至插件的编写都离不 ...

最新文章

  1. JSTL1.1函数标签库(functions)如fn:length
  2. Spring Boot 配置线程池使用多线程插入数据
  3. 前端学习(2813):小程序开发前的环境搭建
  4. 安利一款编辑神器——Markdown
  5. tensorflow中的global_step参数(转)
  6. 广东电网笔试_内容多,备考时间少?广东电网笔试如何准备?
  7. 理解函数:对象(this,arguments),方法(apply(),call(),bind())。
  8. iOS开发之YYKit丰富的组件,如:YYText
  9. ubuntu11.10安装sopcast
  10. IDEA修改主题及字体大小
  11. android源码编译烧鸡,板栗烧鸡的做法图文
  12. 如何实现业务流程集成
  13. Android anr模拟,ANR 的模拟
  14. Python程序设计 大作业 简化的PS
  15. c/c++静态库和动态库制作
  16. 智能工厂——实现智能制造的关键要素之一
  17. GMT对应的SimpleDateFormat
  18. 华为是怎样研发的(11)——绩效管理
  19. 【Pytorch】SGDR
  20. 计算机网络安全技术功能有哪些,计算机网络安全技术课件(一) 安全技.ppt

热门文章

  1. HDU1201 18岁生日【日期计算+水题】
  2. Graphviz样例之集群流程图
  3. UVA455 Periodic Strings【水题】
  4. HDU2098 分拆素数和【筛选法】
  5. Python with 结构
  6. Python —— CPU vs. GPU
  7. matlab 三维图像的绘制
  8. C++ 设计模式 —— 控制器设计模式(实现功能模块间通信)
  9. C 标准库 —— ctypes.h
  10. 学python能做什么类型的工作-学Python Web开发框架到什么程度可以找到开发的工作?...