1、沈阳工程学院课程设计报告 4 猜数字游戏设计课题:猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个 0 到 9 之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A 表示位置正确且数字正确,B 表示数字正确而位置不正确。二、功能要求:1、本游戏显示这样的菜单:(1) 随机产生数据(2) 用户输入数据(3) 退出游戏2、游戏成功与否都能返回主菜单三、算法提示:1、数据结构:数组2、用简单的程序设计方法四、测试数据:测试数据: 3792第一次输入: 12340A2B第二次输入: 56780A1B第三次输入: 08670A1B第四次输入: 97861A1B第五
2、次输入: 17942A0B第六次输入: 27932A2B第七次输入: 37924A0B游戏成功!沈阳工程学院课程设计报告 4 猜数字游戏4 猜数字游戏4.1 问题分析 编写一个猜数字游戏,有一定的容错功能,界面友好,功能齐全。游戏规则:a,一个四位数,各位上的数字不重复,从 1 到 9。b,按以下提示猜出这个四位数。c,每次猜测输入的数据给出类似的提示*A*B。d,其中 A 前的*代表你本次猜对了多少个数字。e,其中 B 前的*代表你本次猜对的数字并且位置正确的个数 。4.2 数据结构与算法分析 本程序多次利用到了调用函数参数,for 循环等,通过比较输入的四个数字和电脑随机的数字值大小来判断
3、猜对的数字正确与否。函数间的调用关系图如下:图 4-2打印得分函数:Printscore( ) 还要不要玩函数:Iswantplay( )输出结果函数:Printresult( )电脑判断是否正确函数:Check_ab( )初始化变量函数:Reset( )随机产生 4 个数函数:Rnd ( )主函数;int main()输入用户所猜的数函数:Get_b( ) 沈阳工程学院课程设计报告 4 猜数字游戏6、流程图图 4-34.3 核心代码退出还要不要玩名字Main() 比较输入的数和随机生成的数.给出提示.A、B表示表示数对位置也对,B 表示数对位置不对1退出判断结果输入四位不相同的数字,如果输入
4、的不是数字或者输入的数字有重复,则重新输入沈阳工程学院课程设计报告 4 猜数字游戏#include #include #include #include #include /选用了以上几个程序为编程服务int Rnd( ) /产生十以内的随机整数。int Rteger;Rteger=rand( )%10;return Rteger;void Get_b(int b) /得到用户输入的四位数,存储到数组 b4中。int i,j, m,n=10000;cinm;if(m9999|mm;for(i=0;iwantplay;沈阳工程学院课程设计报告 4 猜数字游戏cout“=nnn“;void Res
5、et(int A,int B,int * score,int * a,int * b) /用来初始化一些变量。int i=0,t=0,j;(*score)=0; /得分清零。(*a)=0;(*b)=0; /所猜对的数字的个数的计数器清零for(j=0;j10;j+)Aj=j; /初始化数组,为产生无重复随机数做准备。while(i4)t=Rnd();if(At) Bi=At,At=0,i+; /*利用扑克牌中抽牌的思想,来产生无重复随机数,存储到 B(在 main 函数中为 b)中。*/cout“输入一个四位数 开始吧! n“;cout“-n“;void Check_ab(int a,int
6、b,int * A,int * B) /此函数用来检查用户所输入的四位数与系 /统产生的四位数的相同情况。int i,j;for(i=0;i=3;i+) /用两个嵌套的 for 循环来逐个比较 a与 bfor(j=0;j=3;j+)if(ai=bj) /如果数字相同。if(i=j) /如果位置也相同。(*A)+; /A 自加。if(!(i=j) /如果位置不同。(*B)+; /B 自加。void Welcome() /打印程序的开始界面。沈阳工程学院课程设计报告 4 猜数字游戏cout“ *n“;cout“ * *n“;cout“ * = 猜数字游戏= *n“;cout“ * - *n“;co
7、ut“ * programed byzkk *n“;cout“ *nnnn“;void Usage() /显示程序的用法。cout“=用法= n“;cout“ 1.计算机随机产生一个无重复数字的四位数由你来猜.n“;cout“ 2.若所猜的数位置与数字均正确,会显示一个 A,若数字对位置不对,会显示一个 B.n“;cout“=nn“;void Printscore(int n) /显示用户的得分。switch(n)case 0: cout“你真是撞大运了! 恭喜! 恭喜! 加十分!n“;break; /猜的次数小于 3 次case 1: cout“恭喜你 !猜对了! 你真是天才! 加九分!n“
8、;break; /猜的次数小于 6 次大于等于 3 次case 2: cout“不错! 不错! 猜对了! 你真够聪明! 加八分!n“;break; /猜的次数小于 9 次大于等于 6 次case 3: cout“恭喜! 猜对了! 加七分!n“;break; 沈阳工程学院课程设计报告 4 猜数字游戏/猜的次数小于 12 次大于等于 9 次case 4: cout“猜对了! 及格. 加六分!n“; /猜的次数小于 15 次大于等于 12 次default : cout“猜对了 ,但不够快啊,继续努力!n“; /猜的次数大于等于 15 次cout“=nn“;void Printresult(int
9、b,int * A,int * B) /显示每次用户所猜的结果,供其思考判断。int i;cout“ “;for(i=0;i=3;i+)coutbi;cout“ “;for(i=0;i(*A);i+)cout“A“;for(i=0;i(*B);i+)cout“B“;cout“n“;void main()system(“color 9f“); /定义一些最基本的变量,以及调用色彩,使界面变得更为丰富多样化。int i=0,a4,b4,c10,A=0,B=0,score=0;char wantplay=y;srand(unsigned int)time(NULL); /初始化随机数生成器。Welc
10、ome();Usage();while(wantplay=y|wantplay=Y) /如果还想玩。沈阳工程学院课程设计报告 4 猜数字游戏Reset(c,a, /初始化变量。while(A!=4) /只要还没猜对,继续猜。Get_b(b); /输入所猜的数。Check_ab(a,b, /电脑判断。Printresult(b, /输出结果。if(A!=4) A=0,B=0;score+; /累计用户总共猜的次数。Printscore(score/3); /打印得分。Iswantplay( /还要不要玩。4.4 运行结果1.运行程序,打开主界面,如图 4-1 所示。图 4-1 主界面沈阳工程学院
11、课程设计报告 4 猜数字游戏2.根据菜单提示,输入四个不重复的数字如图 4-2 所示,输出猜对是数字结果“A”和“B” 。图 4-2 猜数字沈阳工程学院课程设计报告 结论结 论紧张的两周数据结构实训很快过去了,通过这周的学习使我巩固了以前的知识并在此基础上对数据结构的特点和算法有了更深的了解, 数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已经成为其他理工专业的热门选修课。在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性,同时这两周的学习也提高了我适应
12、实际,实践编程的能力。首先这两周的学习,使我在巩固了原有的理论知识上,培养了我灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我体会到自身知识和能力在实际中的应用和发挥。其次,激发了我创新意识,开发创造的能力和培养沟通能力。另外,让我进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我数据结构的学习和提高很有益处,并且使我明白了程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题
13、的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型线性表、栈、队列、串、数组、广义表、树和二叉树以及图等,然后确定处理过程算法,可得最后结论。最后,在这次实训过程中,我深刻的认识到了自己在学习方面的不足之处,我知道我还有太多的基本的思想没有真正的理解,当然我不会灰心,我会在以后的日子里努力弥补我的不足。总之,两个礼拜的课程设计让我受益匪浅。要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断经历失败,然后又不断的尝试才能获得成功。两个多礼拜中,我有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。两
14、个礼拜的时间我经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。对于我本人来讲这次实训的总体表现,我自己还比较满意,每天做到了按时的出勤,上机遵守机房的管理规定,遵循指导老师的安排并能适时地与老师进行沟通,觉得不足的是不能熟练地掌握 C 语言的设计技巧使编程的结果缺乏效率,不过我相信这只是我的一个开始,我更应该注重的是这次过程,我坚信我会在以后的学习和训练中不断地弥补自己的不足之处,不断的完善自己的编程能力,因为成功需要一点一点积累。沈阳工程学院课程设计报告 结论