猜数字游戏课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1(c/c++程序设计课程设计)设计说明书猜数字游戏的设计与实现学生姓名学号班级成绩指导教师计算机科学与技术系2010年7月9日C/C++程序设计课程设计评阅书题目猜数字游戏的设计与实现学生姓名学号指导教师评语及成绩:成绩:教师签名:年月日答辩教师评语及成绩:成绩:教师签名:年月日教研室意见:总成绩:室主任签名:年月日注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。2课程设计任务书2009—2010学年第二学期专业:计算机科学与技术学号:姓名:课程设计名称:c\c++程序设计课程设计设计题目:猜数字游戏的设计与实现完成期限:自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)说明测试方法,写出完整的运行结果,较好的界面设计,编写课程设计报告。指导教师(签字):教研室主任(签字):批准日期:年月日摘要3本文以VC++作为软件开发环境,利用随机函数,通过数字比较,编程实现了一个猜数字游戏的软件。该软件是由电脑出四位数字让玩家来猜,在每猜错一次后给出相应的提示信息,帮助玩家直到猜对为止。该软件操作简单,界面漂亮,易于被广大的游戏者接受。关键词:猜数字;比较数字;VC++目录1.课题描述...............................................................12.问题分析和任务定义.....................................................23.逻辑设计...............................................................34.详细设计...............................................................55.程序编码..............................................................116.程序调试与测试结果....................................................167.总结..................................................................18参考文献................................................................1911.课题描述本次课题是猜数字游戏的设计与实现。主要是通过C或C++语言开发,实现《猜数字》游戏中的出数字方,在VC环境中实现了由电脑随机产生一个数字不重复的四位数(最高位不为零),并将所猜的数与它自动产生的数进行比较,若猜得不对并作出提示:mAnB,A代表位置正确数字也正确,B代表数字正确但位置不正确。m代表A的个数,n代表B的个数.在每次输入数字后,显示相应的提示信息,直到玩家猜对为止.22.问题分析和任务定义这次课设是要求用C++编写程序,实现数字之间的相互比较,让玩家找出电脑写的四位数字,而玩家在找出四位数字中,电脑需要给出玩家一些提示信息,用以帮助玩家找出答案。对于猜一个各个位数不等的四位数,电脑需要在程序刚运行时,确定一个随机的四位数,且各个位数不相等。而在玩家输入数字时,也需要检验玩家输入的数字是否满足条件,即一个各个位数不重复的四位数。只有玩家输入正确的数字后,电脑才能进行比较数字的运算,如果玩家输入的数字和电脑的不相等,输出提示信息,并应从新读取玩家的数字进行判断,直到玩家放弃猜数字或数字猜对为止。33.逻辑设计猜数字处理系统,包括三个模块,和一个主函数。三个模块分别是电脑产生一个正确的随机数,读取玩家正确的四位数,电脑与玩家数字的比较。其中脑产随机数函数和主函数为整型,其它都无返回类型。主函数通过在不断循环使用三大模块来实现。该程序采用面向对象的思想,来处理函数之间的调用。4Mian()开始定义整型system,player,A,B,num,x,y,a,b输出是否选择1,0选择1输出游戏规则,选择0不输出游戏规则使suiji()函数产生一个四位数字不同的四位数字,即数字system游戏开始请输入四位数字(首位不能为零)读取player;shu.Judge(player,a)判断选手输入的四位数字是否满足条件,若不满足条件,则从新输入,直到输入一个正确的四位数字shu.Judege1(system,player,A,B)CoutA”A”B”B”endl;A!=4再次读取player,并且通过shu.Judege1(system,player,A,B)输出提示信息mAnB,和显示第几次输入数字次数num=9输出知道答案按1,不想知道按0If(x)cinx电脑的数字为system;结束你简直棒极了,这个数字就是system”你一共猜了num“次哦!”NNY图3.1总程序流程图54.详细设计本程序设计为三个模块1)使电脑随机产生一个四位数字intshuzi::suiji(){srand((unsignedint(time(NULL))));//这是一个伪随机数种子,可以产生随机数;intr1,r2,r3,r4;r1=rand()%10;r2=rand()%10;r3=rand()%10;r4=rand()%10;returnr1*r2*r3*r4;}voidshuzi::Judgeji(int&system,int&b)//判断计算机的随机数是否满足条件{b=0;cout请稍等endl;while(system=1023||system=9876)//判断产生的随机数是否满足大小{system=shu.suiji();}inttemp_system[4];//存放系统数字的各位数inti=0;intTS=system;while(0TS){temp_system[i++]=TS%10;TS/=10;}for(i=0;i3;i++)for(intj=i+1;j4;j++)if(temp_system[i]!=temp_system[j])b++;coutb为:bendl;//b为统计四位数字之间各个位数不同的总个数6}开始Judgeji(int&system,int&b)b=0;inttemp_system[4],i=0;intTS=system;system=1023||system=9876system=shu.suiji()TS0temp_system[i++]=TS%10;TS/=10i3inti=0i++intj=i+1j4j++if(temp_system[i]!=temp_system[j])b++Y结束图4.1(a)随机函数流程图图4.1(b)电脑产生一个正确的随机数流程图开始suiji()定义整型sum,r1,r2,r3,r4声明函数srand((unsignedint(time(NULL)))r1=rand()%10;r2=rand()%10;r3=rand()%10;r4=rand()%10;sum=r1*1000+r2*100+r3*10+r4结束返还值sum72).判断玩家输入的的四位数字是否满足条件voidshuzi::Judge3(int&player,int&a)//判断玩家输入的数字是否满足条件{while(player=1023||player=9876){cout您输入的数字不正确,请重新输入endl;cinplayer;}inttemp_player[4];//存放系统数字的各位数inti=0;intTP=player;while(0TP){temp_player[i++]=TP%10;TP=TP/10;}for(i=0;i3;i++)for(intj=i+1;j4;j++)//数字重复出现if(temp_player[i]!=temp_player[j])a++;couta=aendl;//a为统计四位数字之间各个位数不同的总个数}8开始Judgexu(int&player,int&a)a=0;inttemp_player[4],i=0;intTP=player;player=1023||player=9876TP0temp_player[i++]=TP%10;TP/=10i3inti=0i++intj=i+1j4j++if(temp_player[i]!=temp_player[j])a++Y结束cout”您输入的数字不正确,请重新输入”endlcinplayer;图4.2读取正确的四位数流程图93).判断电脑和玩家输入的数字大小是否相等.voidshuzi::Judege1(intsystem,intplayer,int&A,int&B)//计算机与玩家比较是否相等{A=B=0;inttemp_system[4];//存放系统数字的各位数inttemp_player[4];//存放玩家数字的各位数inti=0,j=0;intTS=system;intTP=player;while(0TS&&0TP){temp_system[i++]=TS%10;temp_player[j++]=TP%10;TS/=10;TP/=10;}//电脑产生的随机数与玩家数字相等表示猜对了if(system==player)A=4;//没有猜对else{for(i=0;i4;i++){for(j=0;j4;j++){if(temp_player[i]==temp_system[j]){//电脑的每位数字与玩家的每位数字进行比较if(i==j)A++;//位数相同时,数字也相同,实行A++elseB++;//位数不同时,数字却相同,实行B++break;}}}}}10开始Judgeji(intsystem,intplayer,int&A,int&B)A=0;B=0;inttemp_system[4],i=0;Inttemp_player[4],j=0;IntTS=system,TP=player;0TS&&0TPi4inti=0i++intj=0j4j++If(temp_system[i]==temp_player[j])Y结束temp_system[i++]=TS%10;temp_player[j++]=TP%10;TS/=10;TP/=10;system=playerA=4;i==jA++B++YYNYN图4.3数字的比较流程图115.程序编码#ifndefSHUZI_H#defineSHUZI_H#includeiostreamusingnamespacestd;classshuzi//创建类shuzi{public:voidJudege1(int,int,int&,int&);//电脑和玩家比较数字的函数voidJudgeji(int&,int&);//电脑产生符合条件的数字的函数voidJudgexu(int&,int&);//判断玩家输入数字的函数

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功