C语言猜数游戏程序.docx
《C语言猜数游戏程序.docx》由会员分享,可在线阅读,更多相关《C语言猜数游戏程序.docx(12页珍藏版)》请在冰豆网上搜索。
C语言猜数游戏程序
《C语言程序设计》课程设计
说明书
设计题目:
猜数游戏
班级:
C语言课程设计2班
学号:
姓名:
完成日期:
2012.6.20
1.设计任务
设计题目:
猜数游戏(掌握程序结构及随机函数应用)
程序说明:
游戏的开始由机器产生一个随机数(1~100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:
YouranswerisHIGH,tryagain.,否则,程序提示:
YouranswerisLOW,tryagain.,直到猜对为止。
程序可实现连续猜数,直到游戏者退出。
程序输出要求:
累计游戏者猜对一个数所需次数n,当n<=7时,给出“Congratulation”字样;当7<n<15时,给出“I canbetyoucandoitbetter.”;当n>=15时,用exit(0)库函数退出程序。
附:
随机数发生器函数random()用法
函数原型:
intrandom(intnum);
程序例:
#include/*包含库函数random()的头文件*/
#include
/*printsarandomnumberintherange0to99*/
intmain(void)
{intn;
randomize(); /*初始化随机数发生器*/
n=random(100);/*产生一个0-100的随机数。
*/
printf("Randomnumberinthe0-99range:
%d\n",n);
;
}
2.需求分析
2.1功能需求
本系统是一款小型数学游戏软件,提供简单的游戏功能即可。
主要功能是通过有趣的数学游戏锻炼逻辑思维能力,使用户可以感受到数学的巨大魅力。
2.2性能需求
要求系统稳定可靠,各方面功能齐全,操作简单易懂,达到打开即用的效果!
3.设计算法
注:
算法的整体思路是通过计算机随机生成一个数字,再通过键盘输入的数字与产生的随机数字进行比较!
4.系统模块图
本游戏小系统主要由封面、登陆系统和主菜单3个部分组成。
其中菜单部分又细分为游戏介绍、帮助、开始游戏和退出游戏四个部分。
系统模块图如下所示:
5.模块说明
5.1构建整体框架
首先构造出整体框架,包含头文件、定义变量、声明自定义函数、输出封面等。
头文件:
#include#include#include#definerandom(x)(rand()%x);自定义函数声明:
intzhucaidan();voidyouxijieshao();voidbangzhu();voidkaishiyouxi();inttuichu();
5.2登陆系统
登陆系统提供使用者输入账号密码验证,输入错误则需重新输入,输入正确则跳入主菜单。
此处采用do-while语句循环,直到账号密码正确(初始密码和账号相同)。
若账号密码正确则调用自定义主菜单函数。
进入主菜单采用switch语句进行功能选择。
5.3主菜单系统
主菜单分为4个小的分支,主要进行游戏介绍、游戏帮助以及开始游戏等部分。
提供给使用者一个进行游戏的平台,也可以对不懂得如何使用此系统的使用者进行简单的介绍。
5.4游戏计算部分
计算部分原理见第三部分设计算法。
此部分为程序计算核心部分,进行数据的处理和比较。
此处采用random函数进行初始值随机赋值srand((int)time(0));k=random(100);再通过大小比较得出结果。
6.用户使用说明(部分操作截图)
6.1进入系统
6.2登陆系统
6.3主菜单系统
6.4游戏介绍
6.5游戏帮助
6.6游戏界面
6.7退出游戏
7.测试结果
程序能满足题目要求,测试过程未发现错误。
可以根据使用输入数据给出正确提示。
但程序比较简单,智能满足基本的要求,扩展方面不够!
8.设计小结
在此次程序设计过程中,主要困难来自整体结构的构思,封面、登陆系统、游戏算法等部分程序都可以设计出来。
但是在各个部分的连接方面遇到一些困难,对于程序整体结构不是很清楚。
总的来说,对自己也是一个小小的挑战。
课程设计与平时C语言作业有比较大的差别,平时作业主要是针对一个问题设计一种算法,方法比较固定,算法也比较成熟,不用自己去深入思考算法和结构问题。
而程序设计对设计者的整体能力要求比较高,不仅要求设计者对VC软件有种足够的认识,还要求设计者有自己的思想,能够对题目给的要求真正的理解,才可以真正设计出满足题目要求的程序!
通过这次课程设计使得自己对于我们所学的C语言程序设计课程也有了更加深入的了解!
9.参考文献
⑴龚本灿《C语言程序设计教程》高等教育出版社2011年
⑵龚本灿《C语言程序设计习题集》高等教育出版社2011年
10.附录
#include
#include
#include//包含time函数
#definerandom(x)(rand()%x)
voidmain()
{
intzhucaidan();
voidyouxijieshao();
voidbangzhu();
voidkaishiyouxi();
inttuichu();
inta,b,c=0,choice,end=1;
system("color9");
printf("***************************************\n\n");
printf("**《c语言程序设计》课程设计**\n\n");
printf("**猜数游戏系统**\n\n");
printf("***************************************\n\n");
printf("**程序设计:
11光信曾博**\n\n");
printf("**2012年6月20日**\n\n");
printf("--------------------------------------------------------------------------\n\n");
printf("请输入账号密码登陆!
(初始密码与账号一致)\n\n");
printf("请输入账号:
");
scanf("%d",&a);
do
{
printf("请输入密码:
");
scanf("%d",&b);
if(a!
=b)
{
printf("账号或密码错误,请重新输入!
");
c=1;
}
else
{
printf("密码正确,进入主菜单!
\n\n");
while(end)
{
choice=zhucaidan();
switch(choice)
{
case1:
youxijieshao();break;
case2:
bangzhu();break;
case3:
kaishiyouxi();break;
case4:
end=tuichu();break;
}
}
printf("您已退出游戏程序!
\n");
}
}
while(c==1);
}
intzhucaidan()
{
intchoice;
printf("\n*欢迎使用猜数游戏系统*\n");
printf("----------------------------------\n");
printf("1.游戏介绍\n");
printf("2.帮助\n");
printf("3.开始游戏\n");
printf("4.退出游戏\n");
printf("----------------------------------\n");
printf("请选择功能模块,输入数字1-4:
");
while
(1)
{
scanf("%d",&choice);
if(choice>=1&&choice<=4)
break;
else
printf("输入数字不正确,请重新输入1-4:
");
}
returnchoice;
}
voidyouxijieshao()
{
printf("\n猜数游戏是一款人机互动的小游戏,\n");
printf("在电脑提示的范围下进行猜数并用键盘输入电脑中。
\n");
printf("电脑判断你所输入的数值与电脑默认给出数字的数值的大小并给出提示,\n");
printf("如果你所输入的数字不是电脑默认的数值则需要重新输入,直到正确为止!
\n");
}
voidbangzhu()
{
printf("1.游戏规则:
每个玩家有15次机会进行猜数,若15次之内还没猜出则退出程序!
\n");
printf("2.游戏建议:
玩家可用对半猜的方法进行游戏,逐渐缩小猜数范围,直到最后猜出正确答案!
\n");
}
voidkaishiyouxi()
{intk,g,big=0,small=0;
srand((int)time(0));
k=random(100);
printf("computernumberisgiven!
pleaseinputyournumber(0--100)is:
\n");
while
(1)
{
scanf("%d",&g);
if(g>k)
{
printf("youranswerishigh,tryagain\n");
big++;
}
elseif(g{
printf("youranswerislow,tryagain\n");
small++;
}
else
{
if((big+small)<=7)
{printf("Congratulation\n");}
elseif(((big+small)>7)&&((big+small)<15))
{printf("Icanbetyoucandoitbetter\n");}
break;
}
}
printf("您猜对答案输入数字次数为:
%d",(big+small));
}
inttuichu()
{
intend;
end=0;
returnend;
}