参见三子棋(创建三个文件,打印目录)
实现game函数
搭建游戏平台
一个二维数组存放布置好的雷的信息(mine) 初始化为 ‘0’
一个二维数组存放排查出的雷的信息(show) 初始化为 ‘
初始化棋盘
考虑到之后要在最外圈扫描雷,扫描的大小为11
11,因此棋盘初始化为11*11

打印棋盘
最上面一行和最左边一列旁的多余行列用来显示行列编号

随机布置10个雷
排查雷
输入坐标
是雷-炸死-游戏结束
不是雷-统计周围雷的个数-雷信息存储到show-游戏继续

展示行列的代码有点问题(1,1)坐标上的值实际上时(1,2)

game.h#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define ROW 9
#define COL 9#define ROWS 11
#define COLS 11#define EASY_COUNT 10//初始化棋盘
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);//打印棋盘
void DisplayBoard(char board[ROWS][COLS], int row, int col);//布置雷
void SetMine(char mine[ROWS][COLS], int row, int col);//排查雷
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS], int row, int col);
game.c
#include "game.h"void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{int i = 0;int j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){board[i][j] = set;}}
}void DisplayBoard(char board[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;printf("--------扫雷游戏---------\n");//显示行列号for (i = 0; i <= col; i++){printf("%d ", i);}printf("\n");for (i = 1; i <= row; i++){printf("%d ", i);for (j = 0; j <= col-1; j++){printf("%c ", board[i][j]);}printf("\n");}printf("--------扫雷游戏---------\n");
}void SetMine(char mine[ROWS][COLS], int row, int col)
{int count = EASY_COUNT;//为什么有时候没有10个雷while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}
}static int get_mine_num(char mine[ROWS][COLS], int x, int y)
{returnmine[x - 1][y] +mine[x - 1][y - 1] +mine[x][y - 1] +mine[x + 1][y - 1] +mine[x + 1][y] +mine[x + 1][y + 1] +mine[x][y + 1] +mine[x - 1][y + 1] - 8 * '0';}void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{//输入坐标//  是雷 - 炸死 - 游戏结束// 不是雷 - 统计周围雷的个数 - 雷信息存储到show - 游戏继续int x = 0;int y = 0;int win = 0;while (win < row * col - EASY_COUNT){printf("请输入要排查的坐标:>");scanf("%d%d", &x, &y);//判断坐标合法性if (x >= 1 && x <= row && y >= 1 && y <= col){if (mine[x][y] == '1'){printf("此处有雷你被炸死了\n");DisplayBoard(mine, row, col);break;}else{//统计周围有几个雷int ret = get_mine_num(mine, x, y);show[x][y] = ret + '0';DisplayBoard(show, ROW, COL);win++;}}else{printf("输入坐标非法,请重新输入\n");}}if (win == row * col - EASY_COUNT){printf("恭喜你扫雷成功\n");DisplayBoard(show, ROW, COL);}
}
test.c
#include "game.h"void menu()
{printf("******************\n");printf("******0. Exit*****\n");printf("******1. Play*****\n");printf("******************\n");
}void game()
{//存放布置好的雷的信息char mine[ROWS][COLS] = { 0 };//存放排查出的雷的信息char show[ROWS][COLS] = { 0 };//初始化棋盘InitBoard(mine, ROWS, COLS, '0');InitBoard(show, ROWS, COLS, '*');//打印棋盘DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);/*DisplayBoard(mine, ROW, COL);*///检测是否埋下10个雷//排查雷FindMine(mine, show, ROW, COL);
}int main()
{int input = 0;srand((unsigned int)time(NULL));do {menu();printf("请选择:>\n");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
}

简单的扫雷游戏(9*9)(10个雷)相关推荐

  1. 编写代码实现简单的扫雷游戏

    扫雷 菜单 比较简单,代码如下 void menu() {printf("*******************\n");printf("**** 1. play *** ...

  2. 简易扫雷游戏c语言程序,C++实现简单的扫雷游戏(控制台版)

    C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游 ...

  3. Java写一个简单的扫雷游戏

    〇.目录 一.前言 二.过程中遇到的困难 三.代码 四.成品图 五.代码存在的bug 六.完善建议 七.结语 一.前言 这个学期学习了Java,课程的最后一项作业就是做一个扫雷游戏和一个计算器,经历一 ...

  4. 用C语言实现一个简单的扫雷游戏

    初学者学习了一些c语言基础用法以后需要尝试实战练习,扫雷小游戏就十分适合.因为他能用到很多以前学习的知识,用来巩固再好不过了 废话不多说 开干 我们首先要有一个清晰的思路 和其他游戏一样我们打开游戏第 ...

  5. VC++ 扫雷游戏的界面框架(“雷”按钮),不得不佩服那些码农

    VC++ 实现的一款扫雷游戏的界面框架,不具备游戏功能,仅仅是实现了那些"雷"按钮,不要小看这些按钮,有不少朋友还真眼高手底,试想,现在让你去实现这些按钮,你有什么办法呢?虽然我们 ...

  6. C语言编程 简单展开扫雷游戏

    源代码如下 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h& ...

  7. java用二维数组编写地图_[Java] Java二维数组写一个超级简单的扫雷游戏,适合新手...

    直接上代码//随机生成地雷数 int numOfMines=10; //地图尺寸 int mapSize=9; Random r=new Random(); //用二位数组做地图 int [][] m ...

  8. 简单版扫雷游戏的设计与代码

    文件和三子棋一样 思想 1.要用两个棋盘,一个用来布置雷,一个用来存储排查雷的信息 2.考虑到一开始的排查雷的棋盘界面要用字符'*'显示,所以统一用字符数组来储存数据 3.布置雷的棋盘用字符'1'来表 ...

  9. C语言编写扫雷游戏,超简单

    C语言编写扫雷游戏,超简单 1.扫雷游戏的流程 2.代码编写 3.总结 通过学习C语言的基础知识,基本上是理解了大部分内容,现在就通过所学的知识,写个简单的扫雷游戏,加深对基础知识的理解,正所谓实践是 ...

最新文章

  1. 听完411头猪的哼哼,他们找到了理解“猪语”的算法 | Scientific Reports
  2. 【CVPR Oral】TensorFlow实现StarGAN代码全部开源,1天训练完
  3. 评价并不精辟,感觉没有什么深度
  4. 在Flutter中更快地加载您的图像资源
  5. Arts 第十八周(7/15 ~ 7/21)
  6. Visual-FoxPro常用命令word版
  7. idea 远程调试_IDEA太强悍,针对调试器和代码分析器的改进,提前知道代码怎么跑...
  8. Spring Boot学习总结(5)——SpringBoot Jar应用Linux后台部署执行
  9. 最耗性能的SQL语句
  10. 【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 组件的生命周期...
  11. MyBatis学习总结(三)---映射文件及引入方式
  12. hadoop fs.trash 详解
  13. spss选择主要特征_SPSS统计作图教程:一维箱线图
  14. 利用matlab实现卷积实验报告,matlab卷积实验报告(共8篇).doc
  15. 融云实践:主流叙事之外,科技如何助力民生改善
  16. 关键词细分优化的策略方法
  17. day6--面向对象初识
  18. Maxscript - 顶点法线修改脚本Normal Thief源码学习
  19. ipa包的简单校验方法
  20. 如何将视频的语音变成文字播放出来?

热门文章

  1. 老话讲“深秋不补,过冬吃苦”,五种食物要常吃,安稳度秋
  2. 英语单词记忆以及句式记忆
  3. php自定义微博尾巴,怎么自定义微博小尾巴 (无需工具)
  4. 【JavaWeb学习】CSS(选择器)
  5. 浮云E绘图SDK3.0,快速开发电路图、电子图纸、工业控制流程图、工艺流程图等绘图项目
  6. 不正确的c语言语句是,【单选题】下列不正确的C语言语句是( )。 A. x=y=5; B. x=1,y=2; C. y=int x; D. x++;...
  7. Linux磁盘管理练习题(习题+演示)
  8. mysql建库1044_Mysql创建数据库时提示Error 1044
  9. python时间相减_python处理时间加减
  10. 关于安装双系统时多重引导的说明