ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:168.22KB ,
资源ID:14132656      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14132656.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序的设计扫雷游戏实验报告Word格式文档下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序的设计扫雷游戏实验报告Word格式文档下载.docx

1、游戏区包括雷区、地雷计数器(位于左上角,记录剩余地雷数)和计时器(位于右上角,记录游戏时间),确定大小的矩形雷区中随机布置一定数量的地雷(初级为9*9个方块10个雷,中级为16*16个方块40个雷,高级为16*30个方块99个雷,自定义级别可以自己设定雷区大小和雷数,但是雷区大小不能超过24*30),玩家需要尽快找出雷区中的所有不是地雷的方块,而不许踩到地雷。游戏的基本操作包括左键单击(Left Click)、右键单击(Right Click)、双击(Chording)三种。其中左键用于打开安全的格子,推进游戏进度;右键用于标记地雷,以辅助判断,或为接下来的双击做准备;双击在一个数字周围的地雷

2、标记完时,相当于对数字周围未打开的方块均进行一次左键单击操作:左键单击:在判断出不是雷的方块上按下左键,可以打开该方块。如果方块上出现数字,则该数字表示其周围33区域中的地雷数(一般为8个格子,对于边块为5个格子,对于角块为3个格子。所以扫雷中最大的数字为8);如果方块上为空(相当于0),则可以递归地打开与空相邻的方块;如果不幸触雷,则游戏结束。双击:同时按下左键和右键完成双击。当双击位置周围已标记雷数等于该位置数字时操作有效,相当于对该数字周围未打开的方块均进行一次左键单击操作。地雷未标记完全时使用双击无效。若数字周围有标错的地雷,则游戏结束,标错的地雷上会显示一个“ ”(见下图) 扫雷的设

3、计原理:扫雷游戏分为几个步骤:第一步,使用二维数组表示地图;第二步,随机生成几个地雷;第三步,点击方格的反应,计算每个非雷区方格点开后的数字;第四步,当方格数字为0的情况;第五步,当方格为地雷的情况。第一步地图的大小和第二步地雷的数量都应该是程序中给定的,或者玩家输入的。这个是多少自己决定吧。第三步,计算非雷区方格点开后的数字就把这个方格在二维数组中周围八个方向的方格是否是地雷都检查一遍,一定要注意不要越出数组边界。这个数字可以在游戏初始化时全都计算好,也可以在玩家点击的时候再计算。点击非雷区方格,显示数字,这个方格标记为“已点过”。第四步,当方格数字为0时,这里要用到递归调用,就是让程序自动

4、“点击”这个数字为0方格周围的八个方格,然后再看结果,如果不是0,就停止,如果是0,依然递归调用,直到没有0为止,或者直到点遍所有方格为止,一定要注意不要越出数组边界。第五步,很简单,宣布玩家死亡就可以了。4.工具/准备工作查阅相关资料,了解扫雷的的玩法,了解扫雷的设计思想方法。借鉴他人写过的程序,从中找到突破口。从程序中了解需要的各种函数准备,再进一步获悉该函数的功能与使用方法。对自己要设计的挖地雷游戏进行功能分析,大致如下: 总体游戏过程分析:在屏幕上显示一个游戏界面,雷区范围内预先埋设了一定数量的随机分布的地雷(用数字9代替地雷);玩家通过从键盘中输入(行数X,列数Y)进行点击;若能点中

5、所有非雷区,则游戏胜利;否则踩雷,游戏失败。 简易版扫雷游戏要具备以下功能:1)开局:首先选择游戏等级,然后生成不同等级的雷区界面。游戏等级分为三级:各等级行列数为:简单:1010、普通:1515、困难:2020;雷区每个*号下面或埋藏有1个地雷,或者没有地雷;2)挖雷:从键盘中输入(行数X,列数Y),并按回车键,可挖开它;若所揭方块下有9,则踩雷,此时所有含地雷的块都出现9,该局游戏失败;如果方块上出现数字,它代表在它周围的8个方块中共有多少颗地雷;3)输入:通过键盘输入相关指示信息;4)输出:提示游戏失败,是否继续再来一遍;5.设计步骤、方法5.1主函数第一步,写出主程序的基本框架,确定各

6、子模块名字和参数。具体的函数流程如图5-3 所示:定义使用到的常数、全局变量、函数原型说明。然后初始化图形系统,调用游戏控制函数,游戏只接受键盘,通过鼠标结束游戏,关闭系统,退出游戏。main() int i,j;/*定义i,j变量*/ int NO; int begin=1; int h;/*确定雷的个数*/ while(begin) printf (nnnnnnnnn=nn ttt| 欢迎进入扫雷 |nnnttt| 按回车键继续 |nnttt=nnnn ttt 本程序由张兰兰和杜宏亮完成 nnnn); getchar(); /*游戏开始界面*/system(cls printf( nnnn

7、nnnnn 请选择游戏难度:nn 1简单难度nn 2普通难度nn 3困难难度nn 4自定义难度nn scanf(%d,&h);/*确定游戏难度*/ if(0h&h5) switch(h) case 1: x=10; y=10; b=10; break;/*简单难度*/ case 2: x=15; y=15; b=40;/*普通难度*/ case 3: x=20; y=20; b=60;/*困难难度*/ case 4: system(请输入棋盘行列数(小于20且用逗号隔开):/*从键盘输入坐标*/%d,%dx,&y);请输入雷的个数:/*从键盘输入雷的个数*/b); else输入错误请重新输n

8、InitialValue_game(&g);/*棋盘初始化*/ InitialMine_game(&/*随机布雷*/ print_game(&g,2);/*打印棋盘*/ NO=1; while(NO)Please choose:i,&j); if(-1i-1 & i-1x & -1j-1 & j-1y) switch(openmap(&g,i-1,j-1)g,1);游戏结束!按回车键再来一局n if(getchar()=n) begin=1; else begin=0; NO=0; if(judge_game(&g)=b)win!n/*是否再来一局*/ else print_game(&NO=

9、1;break; default:你输入错误!请重新输入n主控模块的各子模块说明:void InitialValue_game( )用于棋盘初始化;InitialMine_game( )用于棋盘的随机布雷;void print_game( )用于打印棋盘;int judge_game( )用于判断游戏是否结束;int openmap( )用于点开地图;5.2定义全局变量#include #include stdlib.h#includetime.h# define s 20int x; /*棋盘行数*/ int y; /*棋盘列数*/int b; /*选择游戏难度 1简单2普通3困难4 自定义

10、*/int h; /*雷的个数*/struct Games g;struct Games int game_intss; char game_charss;使用结构体数组来完成棋盘的定义,引用时间头文件来完成对随机布雷的随时性。5.3各个函数的分析5.3.1棋盘初始化程序:void InitialValue_game(struct Games *g) for(i=0;ix;i+) for(j=0;jy;j+) (*g).game_intij=0; (*g).game_charij=*;5.3.2随机布雷:InitialMine_game(struct Games *g) int i,j,next1,next2; int sum=0; srand(unsigned)time(NULL); while(1) i=rand()%x; j=rand()%y; if(*g).game_intij=9) continue; (*g).game_intij=9; +sum; for(next1=-1;next12;next1+) for(next2=-1;next2next2+) if

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1