扫雷游戏初步实现与心得

一. 1.老规矩,扫雷游戏也是用模块化加自定义函数实现,也是先写出一个大概框架与流程,前期实现可以看我三子棋的博文  http://t.csdn.cn/uMeOc  ,因为是上来就要打印菜单,所以使用do while循环

void menu()
{printf("******************\n");printf("***** 0.exit *****\n");printf("***** 1.play *****\n");printf("******************\n");
}int main()
{srand((unsigned int)time(NULL));int input = 0;do{menu();printf("请选择:>"); scanf("%d", &input);switch (input){case 1:game();//扫雷游戏break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);//用是否为0来当作判断条件return 0;
}

2.然后就是游戏流程啦,首先我们用两个数组来存放,一个放是否是雷,另一个是玩家玩的时候用来显示出现的数据                                                                                                                               3.然后就是初始化,打印,布置,排查,这么些个流程,这里需要注意的是因为扫雷输入坐标后显示的是周围一圈有几个雷,但是如果在数组的边界查一圈不就越界了吗,所以原本计划9×9变成11×11,初始化依旧用标识符常量,ROWS = ROW+2;COLS同理

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);//排查雷FindMine(mine,show,ROW,COL);
}

4.接下来是初始化棋盘

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;}}
}

5.打印棋盘,这里需要打印出对应得行列号以便于玩家输入坐标

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 = 1; j <= col; j++){printf("%c ", board[i][j]);}printf("\n");}printf("-----------扫雷游戏------------\n");}

6.现在是布置雷,因为是随机布置,所以需要用到rand函数,用0和1来表示非雷和雷

void SetMine(char mine[ROWS][COLS], int row, int col)
{//布置10个雷int count = EASY_COUNT;while (count){//生成随机的下标int x = rand()%row+1;int y = rand()%col+1;if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}
}

7.接下里是统计这个输入的坐标周围一圈有几个雷,这样子就可以返回有多少个雷

get_mine_count(char mine[ROWS][COLS], int x, int y)
{return mine[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';
}

8.接下来是最重要的排查雷与判断胜负

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{//1.输入排查坐标//2.检查坐标// (1)如果是雷 = 很遗憾,你被炸死了// (2)不是雷 = 统计周围有几个雷到show数组,游戏继续int x = 0;int y = 0;int win = 0;while (win<row*col- EASY_COUNT){printf("请输入要排查的坐标:>");scanf("%d %d", &x, &y);//x(1,9),y(1,9)//判断坐标的合法性if (x >= 1 && x <= row && y >= 1 && y <= col){if (mine[x][y] == '1'){printf("很遗憾,你被炸死了\n");printf("\n");printf("\n");DisplayBoard(mine, ROW, COL);break;}else{//统计想(x,y)周围有几个雷int count = get_mine_count(mine, x, y);show[x][y] = count + '0';//显示排查出的信息DisplayBoard(show, ROW, COL);win++;}}else{printf("坐标不合法,请重新输入\n");}}if (win == row * col - EASY_COUNT){printf("恭喜你,排雷成功\n");printf("\n");printf("\n");DisplayBoard(mine, ROW, COL);}
}

最后分出胜负在打印布置雷的图,可以赢得明白

三. 1.最后就是头文件啦,里面有头文件的包含,函数声明,标识符常量定义

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>#define ROW 9
#define COL 9
#define EASY_COUNT 10#define ROWS ROW+2
#define COLS COL+2
//初始化棋盘
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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12909.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信ipad协议GO版本 最新不封号

支持A16&#xff0c;62数据号登录 支持扫码登录 全新支持短信号登陆&#xff0c; 长链接不掉线&#xff0c;稳定不封号 支持获取小程序code 抢购 游戏试玩授权等 getLoginQRCode (获取登录二维码) CheckLoginQRCode(检测扫码状态) ManualAuth(扫码登录) ManualAuth(62数据…

pygame8 扫雷游戏

一、游戏规则&#xff1a; 1、点击方格&#xff0c;如果是地雷&#xff0c;游戏失败&#xff0c;找到所有地雷游戏胜利 2、如果方块上出现数字&#xff0c;则表示在其周围的八个方块中共有多少颗地雷 二、游戏主逻辑&#xff1a; 主要逻辑即调用run_game, 然后循环检测事件…

12 Easyx扫雷游戏

#include<stdio.h> #include<stdlib.h> #include<time.h> #include<easyx.h>#include<mmsystem.h> #pragma comment(lib, "winmm.lib")#define ROW 10 //定义行列的常量 #define COL 10 #define MineNum 10 //雷的数量 #define ImgSi…

Android 实现弹球游戏

一&#xff0c;知识点。 1&#xff0c;如何自定义View&#xff0c;以及重写它的onDraw方法. 2&#xff0c;Intent实现界面跳转。 3&#xff0c;线程的使用。 4&#xff0c;弹出框框的使用。 二&#xff0c;具体实现代码。 MainLayout文件&#xff1a; <?xml version&…

扫雷游戏问题

题目描述 扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。玩家翻开一个非地雷格时&#xff0c;该格将会出现一个数字——提示周围格子中…

psychoPy下载避雷

直接使用命令行&#xff1a;pip install psychopy 下载会遇到两个文件无法下载&#xff0c;需要手动到网上下载&#xff0c;至于那两个文件叫什么&#xff0c;已经不记得了。 接下来是尝试了很多种方法&#xff0c;成功安装的一个&#xff01; 进入官网 https://www.psychopy…

避雷针如何惹怒别人的?

History of the Lightning Rod: How the Lightning Rod was Invented and Terrified & Offended People闪电的驯服者&#xff1a;电学的历史 01 避雷针 一、前言 避雷针仅仅是一个通过电线连接到地下的金属棒&#xff0c;那它为何能够吓到和惹怒别人的呢&#xff1f;  在K…

如何实现精致扫雷游戏(可扩散可标记)---保姆级教程

目录 思路&#xff1a; main函数内容&#xff1a; 创建“双子”数组&#xff1a; 初始化数组&#xff1a; 打印棋盘&#xff1a; 布置雷&#xff1a; 排查雷&#xff1a; 初阶&#xff1a; 大致过程&#xff1a; 如何统计周围雷的个数&#xff1a; 判断是否赢得游戏…

【强化学习】玩转Atari-Pong游戏

如果您感觉项目还不错&#xff0c;请您点个fork支持一下&#xff0c;谢谢qwq 玩转Atari-Pong游戏 Atari: 雅达利&#xff0c;最初是一家游戏公司&#xff0c;旗下有超过200款游戏&#xff0c;不过已经破产。在强化学习中&#xff0c;Atari游戏是经典的实验环境之一&#xff0c;…

如何用计算机编辑游戏,编辑教你用iPad玩转电脑游戏之RPG篇

今天中关村游戏网要给大家带来的并不是几大又几大&#xff0c;盘点有盘点啥的。今天要给大家带来一些特别的东西&#xff1b;同学们你们一定要Hold住不要大喊大叫啊~。 iPad作为现代生活中的高科技产物已经越来越普及了&#xff0c;当然ISO的游戏也并非少数。但有了这些游戏你就…

保姆级教学—扫雷游戏的实现

扫雷的目录 扫雷游戏选择初始化棋盘布置雷打印棋盘排查雷完整代码呈现 结尾 扫雷 整个游戏的实现分为五个部分&#xff1a; 游戏选择初始化棋盘布置雷打印棋盘排查雷 在文章的最后会有完整的代码呈现 游戏选择 首先是游戏选择部分&#xff0c;你可以在此选择是否开始游戏 …

[Moonlight内网串流教程] IPAD超简易操作版 - 安卓苹果通用

超简易进行串流教程 使用设备&#xff1a;ipad Air 3 、有Nvidia显卡的普通Windows笔记本。 Windows系统准备工作 1、打开Nvidia GeForce Experience&#xff0c;如果没有就去下载一个。 2、进入C:\ProgramData\NVIDIA Corporation\Downloader\latest 3、将里面的setup.exe右…

iPad 3g版完美实现打电话功能(phoneitipad破解)

看到这个标题&#xff0c;有的同学可能吐槽&#xff0c;iPad 用来打电话&#xff0c;多雷人啊&#xff0c;人家apple设计的时候没加电话功能是故意这样做的。 不过这次真的有这样的需求&#xff0c;一台测试用的iPad 1 3G版的机器&#xff0c;放进去了一张3G电话卡&#xff0c;…

大学军训板报计算机学院,大学生军训黑板报素材

大学生军训黑板报素材 大学生军训黑板报有哪些呢&#xff1f;我们不妨一起来参考下范文吧&#xff01;希望对您有所帮助&#xff01;以下是小编为您搜集整理提供到的大学生军训黑板报素材内容&#xff0c;希望对您有所帮助&#xff01;欢迎阅读参考学习&#xff01; 大学生军训…

军训计算机电气专业解说词,你的军训有我陪伴

9月3日&#xff0c;湖南大学2018级新生军训开始了。这一天天气如以往一样&#xff0c;闷热难耐&#xff0c;但是对于电气与信息工程学院电自1801班学生助理张之亮来说却是难忘的一天。 就在中午十二点左右&#xff0c;张之亮同学接到了一个紧急电话&#xff1a;电自1801班的黄天…

计算机网络军训口号,军训口号霸气口号(精选60句)

军训口号霸气口号(精选60句) 下面是小编帮大家整理的军训口号霸气口号(精选60句)&#xff0c;供大家参考借鉴&#xff0c;希望可以帮助到有需要的朋友。 军训口号霸气口号1 1、流血流汗不流泪&#xff0c;掉皮掉肉不掉队。 2、一连口号&#xff1a;铁血一连&#xff0c;彰显军颜…

计算机系军训口号四句霸气,军训口号 四句 霸气

军训口号 四句 霸气 掉皮掉肉不掉队&#xff0c;流血流汗不流泪 继承人民军队光荣传统和优良作风为民族复兴刻苦学习 发扬集体主义和革命英雄主义精神为祖国富强立志成才 磨练顽强的斗志&#xff0c;培养吃苦的精神&#xff0c;锤炼良好的品质 服从命令听从指挥团结互助争创佳绩…

计算机学院军训口号大全团队,关于霸气押韵的军训口号大全

关于霸气押韵的军训口号大全 导语&#xff1a;《现代汉语词典》中说&#xff0c;口号是“供口头呼喊的有纲领性和鼓动作用的简短句子”。马克思主义哲学认为&#xff0c;物质决定意识&#xff0c;意识对物质具有能动作用。口号作为意识的表现形式之一&#xff0c;是对当时社会政…

计算机网络军训口号,霸气押韵的16字军训口号(精选50句)

霸气押韵的16字军训口号(精选50句) 人是靠梦想活下来的,也是靠梦想活下去的,军训是锻炼我们的.意识形态。下面和小编一起来看霸气押韵的16字军训口号(精选50句),希望有所帮助! 1、军中骄子,校园精英;铿锵四连,勇往直前。 2、天骄十六,不懈追求;勇往直前,争创一流。 3…

计算机系统军训口号,有气势的军训口号(精选50条)

有气势的军训口号(精选50条) 在日常学习、工作和生活中&#xff0c;大家都听说过或者使用过一些比较经典的口号吧&#xff0c;口号的作用是便于“造势”&#xff0c;形成一种氛围。你知道什么样的口号才能称之为经典吗&#xff1f;以下是小编帮大家整理的有气势的军训口号(精选…