




免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(c/c+程序设计课程设计)设计说明书猜数字游戏的设计与实现学生姓名学号班级成绩指导教师计算机科学与技术系2010年7月9日19C/C+程序设计课程设计评阅书题 目猜数字游戏的设计与实现学生姓名学号指导教师评语及成绩:成绩: 教师签名: 年 月 日答辩教师评语及成绩:成绩: 教师签名: 年 月 日教研室意见:总成绩: 室主任签名: 年 月 日注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。课程设计任务书2009 2010 学年第 二 学期专业: 计算机科学与技术 学号: 姓名: 课程设计名称: cc+程序设计课程设计 设计题目: 猜数字游戏的设计与实现 完成期限:自 2010 年 6 月 28 日至 2010 年 7 月 9 日共 2 周设计依据、要求及主要内容(可另加附页):猜数字是一种益智类小游戏,游戏规则比较简单,一般两个人玩,一方出数字,一方猜。用C/C+语言编写一个程序实现猜数字游戏中的出数字方,要求程序完成以下功能:1) 阐述设计思想,画出流程图;2) 随机抽取一个4位整数K,要求这个四位数没有重复数字,最高位不是0;3)提示玩家,猜一个数字;4)根据玩家猜的数,与K比较,判断玩家猜的数字中位置正确的数字个数m和数字正确而位置不对的数的个数n,并以mAnB的形式输出;5) 如果玩家没有猜对,那么提示mAnB,让玩家继续猜,否则输出“你棒极了,这个数字就是,你一共猜了次哦!”;6) 如果玩家猜了X(XM,M为猜数的最多次数)次还不对,那么提示玩家“你已经猜了x次了,还要继续吗?请选择;如果X=M,则给玩家提示相应的信息;7)说明测试方法,写出完整的运行结果,较好的界面设计,编写课程设计报告。指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘要本文以VC+作为软件开发环境,利用随机函数,通过数字比较,编程实现了一个猜数字游戏的软件。该软件是由电脑出四位数字让玩家来猜,在每猜错一次后给出相应的提示信息,帮助玩家直到猜对为止。该软件操作简单,界面漂亮,易于被广大的游戏者接受。关键词:猜数字;比较数字;VC+目录1.课题描述12.问题分析和任务定义23.逻辑设计34.详细设计55.程序编码126.程序调试与测试结果187.总结20参考文献211.课题描述本次课题是猜数字游戏的设计与实现。主要是通过C或C+语言开发,实现猜数字游戏中的出数字方,在VC环境中实现了由电脑随机产生一个数字不重复的四位数(最高位不为零),并将所猜的数与它自动产生的数进行比较,若猜得不对并作出提示:mAnB,A代表位置正确数字也正确,B代表数字正确但位置不正确。m代表A的个数,n代表B的个数在每次输入数字后,显示相应的提示信息,直到玩家猜对为止2.问题分析和任务定义这次课设是要求用C+编写程序,实现数字之间的相互比较,让玩家找出电脑写的四位数字,而玩家在找出四位数字中,电脑需要给出玩家一些提示信息,用以帮助玩家找出答案。对于猜一个各个位数不等的四位数,电脑需要在程序刚运行时,确定一个随机的四位数,且各个位数不相等。而在玩家输入数字时,也需要检验玩家输入的数字是否满足条件,即一个各个位数不重复的四位数。只有玩家输入正确的数字后,电脑才能进行比较数字的运算,如果玩家输入的数字和电脑的不相等,输出提示信息,并应从新读取玩家的数字进行判断,直到玩家放弃猜数字或数字猜对为止。3.逻辑设计猜数字处理系统,包括三个模块,和一个主函数。三个模块分别是电脑产生一个正确的随机数,读取玩家正确的四位数,电脑与玩家数字的比较。其中脑产随机数函数和主函数为整型,其它都无返回类型。主函数通过在不断循环使用三大模块来实现。该程序采用面向对象的思想,来处理函数之间的调用。图3.1 总程序流程图4.详细设计本程序设计为三个模块1) 使电脑随机产生一个四位数字int shuzi:suiji() srand(unsigned int(time(NULL); /这是一个伪随机数种子,可以产生随机数; int r1,r2,r3,r4; r1=rand()%10; r2=rand()%10; r3=rand()%10; r4=rand()%10; return r1*r2*r3*r4; void shuzi:Judgeji(int& system,int& b)/判断计算机的随机数是否满足条件 b=0; cout请稍等endl; while(system=9876) /判断产生的随机数是否满足大小 system=shu.suiji(); int temp_system4;/存放系统数字的各位数 int i = 0; int TS = system; while(0 TS ) temp_systemi+ = TS%10; TS /= 10; for(i=0; i3; i+) for(int j=i+1; j4; j+) if( temp_systemi != temp_systemj) b+;coutb为:bendl;/b为统计四位数字之间各个位数不同的总个数 图4.1(a) 随机函数流程图图4.1(b) 电脑产生一个正确的随机数流程图2).判断玩家输入的的四位数字是否满足条件void shuzi:Judge3(int& player,int& a)/判断玩家输入的数字是否满足条件 while(player=9876) cout您输入的数字不正确,请重新输入player; int temp_player4;/存放系统数字的各位数 int i = 0; int TP = player; while(0 TP) temp_playeri+ = TP%10; TP=TP/10; for(i=0; i3; i+) for(int j=i+1; j4; j+) /数字重复出现 if( temp_playeri != temp_playerj) a+; couta=aendl;/a为统计四位数字之间各个位数不同的总个数图4.2 读取正确的四位数流程图3).判断电脑和玩家输入的数字大小是否相等.void shuzi:Judege1(int system,int player,int& A,int& B)/计算机与玩家比较是否相等 A = B = 0; int temp_system4;/存放系统数字的各位数 int temp_player4;/存放玩家数字的各位数 int i = 0, j = 0; int TS = system; int TP = player; while(0 TS & 0 TP) temp_systemi+ = TS%10; temp_playerj+ = TP%10; TS /= 10; TP /= 10; /电脑产生的随机数与玩家数字相等表示猜对了 if(system = player) A=4; /没有猜对 else for(i=0; i4; i+) for(j=0; j4; j+) if(temp_playeri = temp_systemj) /电脑的每位数字与玩家的每位数字进行比较 if(i = j) A+; /位数相同时,数字也相同,实行A+ else B+; /位数不同时,数字却相同,实行B+ break;图4.3 数字的比较流程图5.程序编码#ifndef SHUZI_H#define SHUZI_H#includeusing namespace std;class shuzi /创建类shuzipublic:void Judege1(int,int,int&,int&);/电脑和玩家比较数字的函数void Judgeji(int&,int&); /电脑产生符合条件的数字的函数void Judgexu(int&,int&); /判断玩家输入数字的函数int suiji(); /随机函数;#endif#includeshuzi.h#include#includeusing namespace std;shuzi shu; /创建类的对象shuint shuzi:suiji()int sum; srand(unsigned int(time(NULL); int r1,r2,r3,r4; r1=rand()%10; r2=rand()%10; r3=rand()%10; r4=rand()%10; sum=r1*1000+r2*100+r3*10+r4; return sum; /返还一个随机的四位数 void shuzi:Judgeji(int& system,int& b)/判断计算机的随机数是否满足条件 b=0; while(system=9876) system=shu.suiji(); int temp_system4;/存放系统数字的各位数 int i = 0; int TS = system; while(0 TS ) temp_systemi+ = TS%10; TS /= 10; for(i=0; i3; i+) for(int j=i+1; j4; j+) /数字重复出现 if( temp_systemi != temp_systemj) b+; void shuzi:Judgexu(int& player,int& a)/判断选手输入的数字是否满足条件 a=0;while(player=9876) cout您输入的数字不正确,请重新输入player; int temp_player4;/存放系统数字的各位数 int i = 0; int TP = player; while(0 TP) temp_playeri+ = TP%10; TP /= 10; for(i=0; i3; i+) for(int j=i+1; j4; j+) /数字重复出现 if( temp_playeri != temp_playerj) a+; void shuzi:Judege1(int system,int player,int& A,int& B)/计算机与选手比较是否相等 A = B = 0; int temp_system4;/存放系统数字的各位数 int temp_player4;/存放玩家数字的各位数 int i = 0, j = 0; int TS = system; int TP = player; while(0 TS & 0 TP) temp_systemi+ = TS%10; temp_playerj+ = TP%10; TS /= 10; TP /= 10; /电脑产生的随机数与玩家数字相等表示猜对了 if(system = player) A=4; /没有猜对 else for(i=0; i4; i+) for(j=0; j4; j+) if(temp_playeri = temp_systemj) if(i = j) A+; else B+; break; #includeshuzi.h#includeusing namespace std;int main()shuzi shu;int system,player,A,B,num, x,y,a,b;num=1;a=b=0;cout* 你好,欢迎来猜数字游戏 *endl;cout* 您想知道游戏规则吗?想知道按1,不想知道按0 *y; if(y)cout*游戏规则 *endl;cout* 您需要输入四位数字,且各个位数都不相同.如果电脑数 *endl;cout* 字是1234,而你输入的是1439,则会显示2A1B,其中2显示 *endl;cout* 有两个数字位置和大小都相等,1显示位置相同,而大小不等 *endl;system=shu.suiji(); /给系统数字赋一个随机值shu.Judgeji(system,b);while(b!=6) /当b等于6时,得到一个满足条件的四位数b=0;system=shu.suiji();shu.Judgeji(system,b);cout输入4位数字(首位不能为零)player;shu.Judgexu(player,a); while(a!=6) /当a等于6时,得到一个满足条件的四位数a=0; cout您输入的数字有重复,请重新输入player;shu.Judgexu(player,a);while(A!=4) /当A不等于4时,循环继续进行 shu.Judgexu(player,a); while(a!=6) a=0; cout您输入的数字有重复,请重新输入player;shu.Judgexu(player,a); shu.Judege1(system,player,A,B);coutAABBendl;if(A=4) break; /如果A等于4,则跳出循环cout这是您第num次正确输入数字,请再次输入:=9) /当循环次数大于9时,运行提示信息 cout想知道答案吗?想知道按1,不想知道按0x; /如果按1,则输出答案,并且跳出循环if(x) cout电脑的数字为:systemplayer; cout你简直棒极了,这个数字就是system,你一共猜了num次哦!endl; return 0;6. 程序调试与测试结果在VC+6.0的运行界面如图6.1所示:图6.1 猜数字游戏主界面在程序一开始运行中,会出现提示信息,告诉玩家是否看游戏规则。如果选择1,显示游戏规则,游戏开始。如图6.2所示:图 6.2 出现游戏规则如果选择0,不显示游戏规则,游戏开始。如图6.3所示:图 6.3 不出现游戏规则玩家根据提示输入四位数字,如果输入数字太小,太大,或数字有重复,则会提示玩家输入的数字不正确,请玩家重新输入,直到玩家正确输入为止。如图6.4所示:图6.4 玩家输入错误的数字到输入正确为止当玩家输入第七次完之后,仍然没猜出数字,电脑会出现提示信息。如果不想知道答案,按0继续猜数字。如果想知道答案按1,结果如图6.5所示:图6.5 不显示答案继续猜和显示答案程序结束 7 总结在这次课
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光大银行武汉市东西湖区2025秋招笔试综合模拟题库及答案
- 2025国家电网招聘考试考前冲刺练习试题及完整答案详解一套
- 广发银行长春市二道区2025秋招面试典型题目及参考答案
- 2025年公务员考试时事政治检测卷及参考答案详解(模拟题)
- 浦发银行太原市小店区2025秋招笔试英文行测高频题含答案
- 华夏银行潍坊市潍城区2025秋招半结构化面试题库及参考答案
- 兴业银行青岛市胶州市2025秋招结构化面试经典题及参考答案
- 招商银行北京市西城区2025秋招结构化面试经典题及参考答案
- 湖北省宜昌市当阳市2024-2025学年七年级下学期期末语文试题(含答案)
- 浦发银行无锡市江阴市2025秋招笔试热点题型专练及答案
- 《儿科病历书写规范》课件
- 机械加工厂安全生产标准
- 甘肃省建设工程计价规则(DBJD25-98-2022)
- IDC机房机架装机管理作业指导书
- 2024年内蒙古人力资源和社会保障厅事业单位笔试真题
- 食堂员工服务培训
- 提升心理抗压能力的技巧
- 中医医术确有专长人员(多年实践人员)医师资格考核申请表
- 低空飞行器设计
- 《穴位埋线疗法》课件
- 三对三篮球赛记录表
评论
0/150
提交评论