




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文献检索与讲解
- 社会团体财务制度范本及操作指南
- 换电站项目规划方案(3篇)
- 回迁项目审计方案(3篇)
- 洋地黄药物的使用
- 婚庆用品定价方案(3篇)
- 胸椎肿瘤康复护理查房
- 医院电厂承包方案(3篇)
- 双重否定机制治理劣质讲解
- 开采矿石测评方案(3篇)
- JG/T 2-2018钢制板型散热器
- 种植牙和解协议书
- 《大脑中动脉解剖结构》课件
- z08小升初数学试卷及答案
- 2025-2030焦炭行业市场深度调研及发展规划与投资前景研究报告
- 旧房整修工程施工组织设计
- 建筑工程安全文明标准化示范工地管理办法
- 药品不良反应的临床应对措施考试试题及答案
- 鼻饲的注意事项及护理要点
- 高危妊娠5色分级管理
- 2024慢性鼻窦炎诊断和治疗指南解读课件
评论
0/150
提交评论