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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

北京工业大学 c语言课程设计 报告Word文档下载推荐.docx

1、6游戏可有以下结束方式: 成功结束:当前所有非雷区都被标出,程序自动把有雷的方格标为红色,游戏结束,并显示当前玩家分数。 失败结束:情况1:当时间全部用完,而界面仍有非雷方格未标出,则游戏结束。 情况2:遇到雷爆炸并已经用完所有防雷服,则游戏结束。 情况3:游戏过程中,按结束按钮,强行终止。7设置游戏的排行榜,显示玩家排名。拓展功能:1增加时间显示。每一局限定在同一个预先设置的时间段内完成,动态记时并显示,当某一局到达限定时间,则游戏结束(但保留主界面)。2探测仪功能增加为点击本格翻开周围的8个格子。3当游戏成功结束后,可以进行下一局游戏。4 设计一种方法,可以显示非雷方格周边的地雷数。1.1

2、.1游戏功能介绍(1) 通过visual studio 2010进入扫雷游戏界面。(2) 进入游戏控制区域。点击开始,输入用户名,开始计时,同时游戏开始。(3) 成功完成游戏的标志是:在规定时间内 ,挖开所有的非雷方格。三种情况视为失败:1.2 界面需求游戏欢迎界面中:程序运行后,即出现欢迎界面,并显示作者姓名学号,采用闪动字体的形式,使画面生动,按任意键进入游戏。游戏初始界面:游戏界面分为控制区,信息区,游戏区,此时可以点击开始,进入游戏。游戏进行中:游戏以失败结束画面:1.3开发与运行环境需求开发环境:Visual studio 2010运行环境: Win7 2概要设计 游戏流程图:2.1

3、主要数据结构设计:2.1.1二维数组1、 记录每个方格中信息的二维数组mine992、 记录每个方格中信息作为备用的二维数组mine2993、 记录每个方格中信息作为备用的二维数组mine3992.1.2全局变量1 int mine99记录每个方格中信息的二维数组2 int mine299记录每个方格中信息作为备用的二维数组3、int life记录该游戏进行中玩家生命值。4、int mark当前玩家的得分5、time_t start初始时间6、time_t now当前时间7、int time1记录暂停时间8、int b;用于游戏信息区探测仪数量变化统计9、 int k;用于游戏信息区防雷服数量

4、变化统计10、int n;探测仪数量11、int q;用于游戏信息记录中玩家信息的记录12、typedef struct rankinglist char name100;int score;INFO;玩家信息结构体,用于记录玩家信息。13、INFO s10;定义排行榜最大信息保存数为102.2程序总体结构:2.2.1 函数调用说明main()功能:主函数 调用: jiemian(); hitKS(); minefield(); mousemsg(); gameover();游戏失败结束 pause(); 功能:暂停 closeJM();关闭界面jiemian()绘制游戏界面 Life();

5、Mark(); welcome();hitKS()点击开始 Start();mousemsg()鼠标响应 time();zuojianleishutongji(int i,int j);zuojianFLF_TCY(int i,int j); Life(); gamewin();pause()暂停游戏 mousemsg(); pause();closeJM() goodbye();2.2.2 其余子函数功能概要说明Start()接收玩家姓名Life()刷新游戏生命值Mark()刷新游戏当前得分time()记录游戏用时zuojianleishutongji(int i,int j)左键雷数统计z

6、uojianFLF_TCY(int i,int j)左键点出防雷服,探测仪gamewin()游戏胜利结束界面gameover()游戏失败结束界面minefield()初始化方格信息welcome();浮现欢迎界面goodbye();退出游戏界面3详细设计3.1welcome函数功能:产生一个欢迎界面,显示游戏名,作者。使用户界面更加友好。void welcome() char buf12100=设计人:11070322 丛义昊; / 输出屏幕提示 cleardevice(); setcolor(YELLOW); setfont(90, 0, 黑体); outtextxy(160, 50, 挖雷

7、游戏 setcolor(WHITE); setfont(16, 0, 宋体 outtextxy(240,240,buf12); / 实现闪烁的“按任意键继续” int c=255; while(!kbhit() setcolor(RGB(c, 0, 0); outtextxy(255, 400, 按任意键进入游戏 c -= 8; if (c 0) c = 255; Sleep(20); getch();3.2界面函数功能:构造游戏初始界面,包括了游戏界面,字体,线,填充颜色,字符输出等各方面的设计。void jiemian() initgraph(640,480);/欢迎界面 welcome(

8、); initgraph(900,650);/初始化图形方式 int i,j; /定义变量 char buf1100=开始 char buf2100=暂停 char buf3100=结束 char buf4100=防雷服: char buf5100=探测仪: setlinestyle(PS_SOLID,NULL,3);/更改线的粗细为3 setfont(20,0, /字体设为黑体 setfillstyle(LIGHTGRAY,SOLID_FILL); rectangle(100,100,800,600); rectangle(100,100,350,450); /游戏控制区 rectangle

9、(100,450,350,600); /游戏信息区 rectangle(150,150,300,200); /开始框 rectangle(150,250,300,300); /暂停框 rectangle(150,350,300,400); /结束框 outtextxy(210,167,buf1); /指定位置输出字符串 outtextxy(210,267,buf2); outtextxy(210,367,buf3); outtextxy(130,460,buf4); outtextxy(130,480,buf5); /初始化生命显示 Mark(); /初始化得分显示 setfillstyle(

10、BLUE,SOLID_FILL); for(i=0;i9;i+) /画9x9的雷阵并涂色 for(j=0;j150&m.xm.y0); /随机位置产生防雷服 if(mineij=0) mineij=2; mine2ij=2; mine3ij=2; flfNUM-; while(flfNUM /随机位置产生探测仪 mineij=3; mine2ij=3; mine3ij=3; tcyNUM-; while(tcyNUM3.7Life Mark函数功能:由于life ,mark为全局变量,将Life Mark函数嵌套在任意一个可以影响life ,mark值变化的子函数中,即可实现游戏信息区生命值,

11、得分的实时更新。void Life() /刷新游戏信息区的生命值显示 char buf6100; sprintf(buf6,生命值:,life); outtextxy(130,500,buf6);void Mark() char buf8100; sprintf(buf8,当前得分:,mark); outtextxy(130,520,buf8); /输出当前得分3.8 pause函数功能:嵌套在mousemsg函数中,通过用户点击暂停键区域,即可实现结束mousemsg函数的作用,在主函数中,由于pause函数在mousemsg之后,所以紧接着执行pause函数,最终通过再次点击暂停判断条件中

12、的两个函数相互调用,达到可以反复暂停的效果。if(m.x250&300) /点击暂停 time1=time1+(int)difftime(start,now);int pause() if(life=70) return 0; if(mark=71) switch (m.uMsg)/达到暂停游戏效果 case WM_LBUTTONDOWN: 300) now=time(NULL); mousemsg();/函数相互调用 pause(); continue;3.9 mousemsg函数功能:此函数包含一个大的永真循环,是游戏设计的关键部分包括1.刷新时间显示 2左键点击雷阵方格,开始、暂停、结束

13、键的响应 3右键点击使用探测仪翻开周围格子的响应 4 通过时间,得分,生命来判断游戏是否结束(成功or失败)。int mousemsg() int i,j,mineNUM=0; char buf7100; while (true) /大循环 time(); /调用时间函数 if(time1+(int)difftime(start,now)=70) return 0; /时间到,游戏以失败结束 if(MouseHit() /获取鼠标信息 setfillstyle(LIGHTBLUE,SOLID_FILL); for(i=0;i+) for(j=0;j+) if(m.x(400+i*40)&(44

14、0+i*40)&(170+j*40)&(210+j*40) zuojianleishutongji(i,j); /调用雷数统计 if(mineij=1) circle(420+i*40,190+j*40,15); life-; /踩雷生命减一 Life(); /刷新生命值 mineij=6; /赋另值,防止重复点击 setfillstyle(BLACK,SOLID_FILL); if(k0) bar(191+(k-1)*20,459,209+(k-1)*20,475); /游戏信息区防雷服减少显示一个 k-; setfillstyle(LIGHTBLUE,SOLID_FILL); floodf

15、ill(406+i*40,176+j*40,WHITE); if(life 350&400) /点击结束 life=0; if(mark=71) /胜利条件之一,成功翻开所有格子 gamewin(); return 0; break;由于四边及四角的特殊性,需要考虑到mineij中i,j的具体取值,所以需要分类讨论,鉴于有雷格子的特殊性,需要将其翻过后另赋为一个特殊值6,以便与翻过的其他格子区分开。 case WM_RBUTTONDOWN: /右键为探测仪功能,翻开本格周围9个格子,并显示雷数,标识雷的位置 for(i=0; for(j=0; if(n0) /当有探测仪时,点击生效 if(b0

16、) /控制游戏信息区的防雷服显示 setfillstyle(BLACK,SOLID_FILL); bar(190+(b-1)*20,477,211+(b-1)*20,497); b-; /防雷服显示减一个 if(mineij=0) setfillstyle(LIGHTBLUE,SOLID_FILL); mineij=5; mark+; if(mineij=2) setfillstyle(GREEN,SOLID_FILL); circle(200+k*20,467,7); floodfill(201+k*20,468,WHITE); floodfill(421+i*40,191+j*40,WHITE); life+; k+; if(mineij=3) setfillstyle(RED,S

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

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