




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目:地雷游戏 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹 2016 年 1 月 6 日目录1.系统需求分析32.总体设计32.1游戏功能:33.详细设计33.1界面设计:33.2游戏控制及结束条件:44.系统调试165.结果分析176.总结171. 系统需求分析当今社会发展迅速,人们对计算机的了解也不断深入,使用计算了玩一些小游戏放松了心情也有益于大脑的开发。扫雷作为一种经典的游戏被人们所熟知,本课程设计就是复刻了经典的扫雷游戏。 2. 总体设计本课程设计主要是开发一个基于C+的扫雷小游戏,游戏采用VC6.0开发工具在windows平台下进行开发。2.1游戏功能:l 有三种难度选择。l 通过输入3位数字进行扫雷。l 能记录游戏者名称。l 游戏结束时能弹出本次游戏的总结。3. 详细设计3.1界面设计:图3-13.2游戏控制及结束条件:通过输入3个数字,前两个数字为坐标,最后一个数字“1”表示此位置为雷,“0”则表示不是。如:1 3 1 表示一行三列是雷;2 4 0 表示二行四列不是雷。当数字周围雷都被扫出时,可再次按要求输入此位置,可得到周围数字。主要代码如下:#include #include#include #include #include #include /时间 /文件#include #define random(x)(rand()%x)using namespace std;void thunder(int Dif,int Row,int Column,char *USer)int r,c,alls2222,backstage2222=0;srand(int)time(0);for(r=1;r=Row;r+) / 生成alls(01)1是雷for(c=1;c=Column;c+)if(random(6)1) allsrc=1; elseallsrc=0;for(r=0;r=Row+1;r+) /生成 backstage(正确答案)for(int c=0;c=Column+1;c+)if(allsrc=1) (int)backstagerc=*; /将1变为 * 代表雷elsefor(int i=r-1;i=r+1;i+) /将0变为数字 (代表周围雷数)for(int j=c-1;j=c+1;j+)if(allsij!=allsrc&allsij=1)backstagerc+; /else 结束 ; / for 结束; / for 结束 cout=*=endl;char surface2222; /生成surface(用户界面)for(r=0;r22;r+) /全部为零for(c=0;c22;c+)surfacerc=0;for(r=1;r(*|数字) 的个数 赢的时候停止循环)for(c=1;c=Column;c+)surfacerc=#;for(r=1;r=Row;r+) /输出 surface 界面 便于检查for(c=1;c=Column;c+) cout surfacerc; coutendl;cout请按格式输入endl前两个数字为坐标,最后一个数字“1”表示此位置为雷,“0”则表示不是。endl如:1 3 1 表示一行三列是雷;2 4 0 表示二行四列不是雷endl提示:当数字周围雷都被扫出时,可再次按要求输入此位置,可得到周围数字。xyjudge; if(allsxy!=judge)coutyou lose!endl;coutThe answer is:endl;for(r=1;r=Row;r+) /输了 输出backstage 显示正确答案 for(int c=1;c=Column;c+) cout (char)(backstagerc=42?backstagerc:backstagerc+0); /输出backstage coutendl;break; else if(allsxy=1) if(surfacexy=#)num-;surfacexy=; / 雷 判断正确 显示“”;数“#”elseif(backstagexy!=0) / 数字 判断正确 显示数字if(surfacexy=#)num-; surfacexy=backstagexy+0; / 数“#” elseint lei_num=0; for(int i=x-1;i=x+1;i+) /数 数字周围 雷的个数 for(int j=y-1;j=y+1;j+)if(surfaceij=) lei_num+; if(backstagexy=lei_num) / 看数字周围雷是否全部扫出 提示 显示数字周围for(int i=x-1;i=x+1;i+)for(int j=y-1;j=y+1;j+)if(surfaceij=#) /数“#”surfaceij=backstageij+0;num-; else / 数字为零时 显示零周围的零if(surfacexy=#)num-; /数“#” surfacexy=backstagexy+0;for(int i=x-1;i=x+1;i+) / 显示零周围的数字for(int j=y-1;j=y+1;j+)if(surfaceij=#) / 避免 死循环surfaceij=backstageij+0; num-; /数“#”for(int k=0;k20;k+) /最多20层零 (点出最边上的零)for (int R=1;R=Row;R+) /检查所有零for(int C=1;C=Column;C+) /再次显示零周围的数字if(surfaceRC=0)for(int i=R-1;i=R+1;i+)for(int j=C-1;j=C+1;j+)if(surfaceij=#) / 避免 死循环 数“#”surfaceij=backstageij+0;num-; /匹配for 内 /匹配 for 外/匹配else/匹配else/匹配elscoutendl;cout=*=endl;for(r=1;r=Row;r+) /输出界面(已修改)for(c=1;c=Column;c+) cout surfacerc;coutendl; /匹配whilefinish=clock(); /计算时间结束 duration=(double)(finish-start)/CLOCKS_PER_SEC; /时间变量 if(num=0) /所有cout You win! Congratulations! endl; cout Your time is: durationendl;if(Dif=1) /读取 简单扫雷 的存储文件string Name; string name6; double Time,rang; double times6; int i=0; ifstream inf(扫雷 简单.txt); for(i=0;iName;infrangTime; namei=Name; timesi=Time;inf.close();name5=USer; /本轮玩家信息times5=duration; double t1=0; string t2; for(int j=0;j5;j+) /冒泡排序法 for(i=0;itimesi+1)t1=timesi; timesi=timesi+1; timesi+1=t1; t2=namei; namei=namei+1; namei+1=t2;ofstream outf(扫雷 简单.txt); for(i=0;i5;i+) /将前五名玩家信息存储到文件中coutnamei i+1 timesiendl; outfnamei i+1 timesiendl; outf.close(); if(Dif=2) /读取 一般扫雷 的存储文件string Name; string name6; double Time,rang; double times6; int i=0; ifstream inf(扫雷 一般.txt); for(i=0;iName;infrangTime; namei=Name; timesi=Time;inf.close();name5=USer; /本轮玩家信息times5=duration; double t1=0; string t2; for(int j=0;j5;j+) /冒泡排序法 for(i=0;itimesi+1)t1=timesi; timesi=timesi+1; timesi+1=t1; t2=namei; namei=namei+1; namei+1=t2;ofstream outf(扫雷 一般.txt); for(i=0;i5;i+) /将前五名玩家信息存储到文件中 并输出coutnamei i+1 timesiendl; outfnamei i+1 timesiendl; outf.close();if(Dif=3) /读取 困难扫雷 的存储文件string Name; string name6; double Time,rang; double times6; int i=0; ifstream inf(扫雷 困难.txt); for(i=0;iName;infrangTime; namei=Name; timesi=Time;inf.close();name5=USer; /本轮玩家信息times5=duration; double t1=0; string t2; for(int j=0;j5;j+) /冒泡排序法 for(i=0;itimesi+1)t1=timesi; timesi=timesi+1; timesi+1=t1; t2=namei; namei=namei+1; namei+1=t2;ofstream outf(扫雷 困难.txt); for(i=0;i5;i+) /将前五名玩家信息存储到文件中coutnamei i+1 timesiendl; outfnamei i+1 timesiendl; outf.close(); void scale(int dif,char *User) /选择难度int row,column;if(dif=1) row=3;column=3;if(dif=2) row=7;column=7;if(dif=3) row=10;column=10;coutThe scale is: row*columnendl;thunder(dif,row,column,User);int main()int Continue=1;int difficulty;char user10;cout Welcom to the game! endl 请输入用户名! user;while(Continue=1) cout=*=endl 请选择难度! endl 简单1 endl 一般2 endl 困难3 difficulty; scale(difficult
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州茅台酒厂集团招聘管理人员13人笔试历年参考题库附带答案详解
- 2025贵州六盘水攀登开发投资贸易有限公司面向社会招聘12人笔试历年参考题库附带答案详解
- 2025福建晋江产业集团及下属公司招聘笔试历年参考题库附带答案详解
- 2025湖南长沙长泰智能装备有限公司招聘70人笔试历年参考题库附带答案详解
- 2025广西桂林市恭城瑶族自治县泰源粮油购销公司招聘国有企业工作人员笔试总及考察人员笔试历年参考题库附带答案详解
- 2025内蒙古农牧业融资担保有限公司招聘工作人员10人笔试历年参考题库附带答案详解
- 2025第十师北屯市高层次和急需紧缺人才引才(20人)模拟试卷附答案详解(完整版)
- 2025广西河池市计量测试研究所招聘2人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年湖南娄底市城市发展控股集团有限公司外派人员选聘考前自测高频考点模拟试题及1套完整答案详解
- 2025广西南宁市武鸣区乡村振兴局招聘公益性岗位工作人员1人模拟试卷及答案详解(夺冠系列)
- 2025广东房屋租赁合同范本官方版
- 2025定制衣柜安装承揽合同范本
- 2025年MicroLED行业研究报告及未来行业发展趋势预测
- 《彩虹》课件 部编版语文二年级上册
- 2025年全国企业员工全面质量管理知识竞赛试题及答案
- 2025《煤矿安全规程》新旧对照专题培训
- 水下激光探测-洞察及研究
- 7.2 量身高(课件)-2025-2026学年三年级数学上册北师大版
- DB44∕T 2499-2024 海堤生态化建设技术导则
- GWZBQ-10(6)G 型微机高压启动器保护装置产品使用说明书
- 腰椎管狭窄症病例讨论
评论
0/150
提交评论