(草稿)C语言课程设计---猜数字游戏报告
廉政教育-温酒斩华雄的故事
C语言课程设计----猜数字
摘要
该软件在Win
dows系统上为玩家提供猜数字游戏的
基本功能,游戏用户可以在开始游戏时,选择不同的难度来进行游戏。当用户选择了适合的难度时,系统会在内部产
生对应范围内的随机数,以供用户进行猜测
,用户每次猜数
字后系统会给出本次猜数字的结果提示,先比较用户猜测
数字是否等于系统产生
的随机数,若相等则提示用户猜数
字成功,然后输出用户猜测的次数和本局游戏所用时间,并
根
据猜测次数给出评价。如果用户猜测数字不等于系统产
生的随机数,则提示该数字与随机数比较时大了还
是小了,
并输出比较结果,同时记录当前用户猜测的次数。直至用
户成功猜中随机数。且用户在
游戏过程可输入对应指令,
返回难度选择菜单,再根据个人喜好选择其它难度或者退
出游戏。。
关键词:游戏模块 猜数字 随机数 中途退出
1
C语言课程设计----猜数字
目录
摘要……………………………………………………………………1
一.设计要求……………………………………………………………3
二.开发环境……………………………………………………………3
三.设计目的……………………………………………………………3
四.需求分析……………………………………………………………3
五.系统设计……………………………………………………………4
(一)总体设计…………………………………………………………4
(二)系统流程描述……………………………………………………6
(三)详细设计…………………………………………………………7
六.程序测试……………………………………………………………11
七.心得体会……………………………………………………………12
八.参考文献……………………………………………………………13
附录:源程序…………………………………………………………13
2
C语言课程设计----
猜数字
一.设计要求
1).功能要求:
计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,
直至猜到,给出所用时间和评语。
2).界面要示:
图形方式界面
二.开发环境
开发语言:C语言。C语言功能丰富,表达力强,使用灵活,应用面广,目标程序效率高,
可移植性好,既有高级语言的优点,又有低级语言的许多优点。
开发工具:TC++3.0速度快 功能强大稳定兼容性强调试方便,适合初学者使用
三.设计目的
为了巩固和加深对编程课程的基本知识的理解和掌握,并且能够掌握
编程和程序调试的基本技
能。
通过程序的设计训练和提高学生的基本技能,掌握字符串的表示
方法和字符串函数的功能、编
程软件操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,
提高编程兴趣与编程水
平,学会如何正确的书写程序设计说明文档,提高解决实际问题的能力,巩固语法
规则的理解和掌
握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。
四.需求分析
猜数游戏的目标是按照设定的游戏规则为玩家提供一个简单而愉快的游
戏界面,同时给玩家一
些特定的功能,便于更好的使用该游戏软件。
本游戏突破一般
游戏的娱乐功能,在娱乐的同时开拓了玩家的思维及应变能力。猜数字游戏是
一种看似简单但事实很难的
游戏,我们在玩的同时要不停地动脑筋,计算着数字的概率,这就锻炼
着我们对数字的敏感和对概率的熟
悉。这个游戏不仅学生可以玩,成人也是很适合的,我们在玩游
戏的同时也在不停的锻炼我们的耐心和横
心。
由于我们是初学者,设计过程中有很多不足之处,所以我们的游戏并没有排行等功能。程序代码中有,级别选择的机会,选择合适难度后可正式进入游戏模块。该游戏可能有点难度,但我认为
这
或许会更好,我们玩的时候也是和我们自己比赛,不停的超越自己。
功能需求描述: 猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给
用户提
供玩家根据个人意向选择不同难度进行游戏的机会。游戏规则如下。
1, 游戏软件随机产生1个数字
,但不显示,给用户提供输入提示符,让用户猜这个数字的值。如
果正确地猜中这个数字,则猜数字成功
。
2, 玩家猜数字的次数不限,游戏过程中玩家可输入特定指令放弃游戏返回主界面。
3
C语言课程设计----猜数字
3, 玩家每次输入猜测数字,
统会将输入数字与本次游戏产生的随机数比较,相等则猜数字成功,
不相等则根提示猜测数字与随机数比
较,大了还是小了并记录当前游戏猜测次数。
4, 当玩家成功猜中数字时,系统会输出本局所用时间
和玩家猜测次数,并根据游戏次数对游戏结
果作出评价。
本游戏软件需要实现以下一些基本功能。
1, 主界面区:当玩家运行程序后,程序会输出一
个主界面,其中包括3个不同难度选择和1个推
出程序的选项。
2, 游戏区:玩家可以在游
戏区逐次猜数字,系统会给玩家每次猜数字后的提示,猜测数字与随机
数比较,是大了还是小了,玩家在
游戏过程可输入特定指令跳出游戏并返回主界面。
3, 游戏结果评价:当玩家成功猜中数字时,系统
会输出本局所用时间和玩家猜测次数,并根据游
戏次数对游戏结果作出“Wonderful”,“Pe
rfect”,“Cool”等评价。
五.系统设计
(一)总体设计:
在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统
的主要功能模块和用户需求,
下面将在总体设计过程中,给出猜数字的模块结构,流程描述及界面布局,
并使得系统的总体设计
符合软件工程中总体设计的基本原则。
⒈开发与设计的总体思想
猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数<
br>字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的
正确性和质量。
2.系统模块设计结构图
依据需求分析结果,猜数字游
戏可以分为三个模块:主界面区模块,游戏区模块,游戏结果评
价模块。系统模块结构如图(A)所示。
主界面区
猜数字游戏
游戏区
游戏结果评价
(A)
3.模块设计
⑴主界面区模块
该模块为玩家提供难度选择和退出程序功能,选择不同选项将执行不同函数程序,同时若用户
4
C语言课程设计----猜数字
输入错误信息会谈出提示语句,要求用户正确输入。
①低级难度:产生1个1到10
范围内的随机整数,执行游戏区模块,开始游戏。
②中级难度:产生1个1到10
0范围内的随机整数,执行游戏区模块,开始游戏。
③高级难度:产生1个1到10
00范围内的随机整数,执行游戏区模块,开始游戏。
④退出程序:结束游戏,退出程序。
排行榜模块功能树如图(B)所示。
低级难度
中级难度
主界面
高级难度
退出程序
(B)
⑵
游戏区模块
该模块为玩家提供猜数字游戏的主体功能,在主界面模块选择难度后对应由系统产生1个随
机
的整数,以供用户进行猜测该数字的数值。用户在游戏工程可输入特定指令放弃本局游戏并返回主界面。用户猜中数字则提示用户游戏成功,并显示系统随机产生原始数字,同时输出本局游戏时间
猜
数次数,并根据猜测次数对游戏结果进行评价。该模块有3个子功能。
①产生原始数字:由系
统产生1个对应选择范围的随机数,作为游戏的原始数字供玩家进行猜
数字游戏,同时计时器开始工作。
②游戏提示:用大了(Too Higjh),小了(Too Low)的形式提示玩家当前猜数字的匹
配情况,
并记录当前游戏猜测次数。用这种方式提示用户对自己的猜测进行调整。
③放弃游戏
:用户在游戏过程了输入“E”或“e”并二次确认后选择放弃游戏,再次返回主界
面,以选择其它难度
重新开始游戏或退出程序。
④游戏结果统计评价:用户猜中数字后提示用户游戏成功,并显示系统随机
产生原始数字,同
时输出本局游戏时间猜数次数,并根据猜测次数对游戏结果进行评价。
模块功能树如图(C)所示.
5
C语言课程设计
----猜数字
产生原始数字,开始计时
游戏提示
游戏区
放弃游戏
游戏结果统计评价
(C)
⑶游戏结果评价
该模块的功能是当玩家成功完成游戏猜中数字时
,系统会停止计数器,显示本局游戏系统所产
生的原始随机数,即正确答案。同同时输出本局游戏所用时
间和玩家猜测次数,并根据游戏次数对
游戏结果作出“Wonderful”,“Perfect”,“
Cool”等评价。产生新记录模块功能树如图(D)所示。
停止计时器
显示原始数
游戏结果评价
显示游戏所用时间和数字猜测次数
根据猜测次数评价游戏结果
(D)
(D)
(二)系统流程描述
系统的主体处理流程如图(E)所示。
6
C语言课程设计----猜数字
开始游戏
选择难度
产生随机数
猜测随机数
提示猜测情况
放弃游戏
没猜中
猜中了 显示游戏次数和时间
显示游戏次数时间和评价
结束游戏 重新开始
(E)
(三)详细设计
1.游戏模块设计
⑴模块描述
游戏区模块是猜
数字游戏软件的核心部分,用户进入模块之后,系统产生1个对应范围内的随
机整数,计时器开始工作,
并在玩家每一次猜数后都给玩家当前猜测结果的提示。大了表示猜测数
字比随机数大,小了表示猜测数字
比随机数小。
7
C语言课程设计----猜数字
⑵源文件定义
#include
#include
#include
#include
⑶函数的声明
①vido
mian()函数
功能:软件执行的入口,在函数所在的程序头部包含了部分系统必需的头文
件和完成其他功能
的源文件。在该函数中还提供了系统功能选择的平台,提示用户系统可用的功能有哪些
和这些功能
的选项代码。并给用户提供了输入功能选项代码的接口,当用户输入选项代码后,则显示给用
户相
应的功能处理界面或结果。
输入:用户想要使用的系统功能代码。
处理:
a.接受玩家输入的选项代码
b.引导玩家进入相应的功能界面。
输出:
a. 系统功能选择平台。
2. 游戏功能模块
开始游戏和进行游戏过
程,,提示玩家依次猜数字,每次给出提示,直至放弃游戏或正确猜中数
字。
程序:
void test(int gess)
{
char num=NULL;
char newchoose=NULL;
int sum=1;
int
tum;
long ti;
system(
clrscr();
清空屏幕内容
srand((unsigned)time(NULL));
计时器开始运行
t=time(NULL);
计时器统计秒数赋值给t
int temp = (num-'0');
while(temp!=gess)
游戏主程序
{
printf(
printf(
printf(<
br>scanf(
if(num == 'e')
输入小写e,统计猜测次数和所用时间,回到主界面
{
tum = sum-1;
ti=time(NULL)-t+1;
printf(
再次确认是否返回主界面
8
C语言课程设计----猜数字
printf(
printf(
scanf(
if(newchoose
== 'y')
输入小写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
else if(newchoose
== 'Y') 输入大写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
}
else if(num
== 'E') 输入大写E,统计猜测次数和所用时间,回到主界面
{
tum = sum-1;
ti=time(NULL)-t+1;
printf
(
printf(
printf(
scanf(
if(newchoose
== 'y') 输入小写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
else if(newchoose
== 'Y') 输入大写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
}
temp =
num-'0';
if(temp>gess)
比较输入数字与随机数的大小,并输出比较情况
{
system(
9
C语言课程设计----猜数字
clrscr();
清空屏幕
printf(
输出提示语,猜测数字太大
sum++;
}
else if(temp
system(
clrscr();
清空屏幕
printf(
输出提示语,猜测数字太小
sum++;
}
else
{
t=time(NULL)-t+1;
if(sum<3)
{printf(
猜中后统计猜测次数和所有时间,根据猜测次
数给出相应评价,按ENTER退回主界面
printf(
printf(
else
if(sum<5)
{printf(
printf(
printf(
else
if(sum<7)
{printf(
printf(
printf(
else
if(sum<9)
{printf(
printf(
printf(
else
if(sum<11)
{printf(
printf(
printf(
else
if(sum<11)
{printf(
printf(
printf(
else
{printf(
printf(
printf(
}
10
C语言课程设计----猜数字
}
getchar();
getchar();
}
六.程序测试
打开游戏:猜数字,出现主界面
输入错误数字,出现提示
11
C语言课程设计----猜数字
按ENTER键回到主菜单后,输入1,选择初级难度的
游戏过程输入“E”放弃游戏,按“ENTER”可返回主界面
正确猜中数字,按“ENTER”可返回主界面
七.心得体会
经过几个星期的C语言课程设计,感觉自己收获不少!
本程序涉及的
知识虽然简单,却也是C语言必备的基本知识。在做课程设计的过程
中,我见识到了C语言的重要性和我
在程序设计方面的不足,让我了解到要把书本知识
转换为可以实际操作的东西是需要扎实的理论基础和严
谨的逻辑思维的,同时我也发现
了平时很多没有注意到的问题,弥补了我C语言方面的不足,比如说数组
,在本程序中
12
C语言课程设计----猜数字
出现
的很频繁,我必须用心的一个一个分析,调试,每一次的调试成功,都带给了我莫
大的欣喜。
回顾起此次C语言的课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论
到实践,在整整一星期
的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东
西,同时不仅可以巩固了以前所学过的知
识,而且学到了很多在书本上所没有学到过的
知识。通过这次课程设计使我懂得了理论与实际相结合是很
重要的,只有理论知识是远
远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才
能真正为
社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问
题,可以说得是困难重重,这毕竟第一次做的,难免会遇到
过各种各样的问题,同时在设计的过程中发现
了自己的不足之处,对以前所学过的知识
理解得不够深刻,掌握得不够牢固,通过实践的学习,我认到学
好计算机要重视实践操
作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重
在实
践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
八.参考文献
[1] 作者:谭浩强 C程序设计(第三版)
出版单位:清华大学出版社
[2] 作者:黄明 梁旭 万洪莉 C语言课程设计
出版单位:电子工程出版社
附录:源程序
(因函数定义等原因,保存文件名以CPP为后缀程序放可正常运行)
#include
#include
#include
#include
int dif_1(); 定义各变量
int dif_2();
int dif_3();
long t;
int ch;
void menu_1();
int
menu_in();
int dif_1()
{
int dif_1;
dif_1 = rand()%10+1;
产生1到10之间的随机数
return dif_1;
}
int
dif_2()
{
int dif_2;
13
C语言课程设计----猜数字
dif_2 =
rand()%100+1; 产生1到100之间的随机数
return
dif_2;
}
int dif_3()
{
int
dif_3;
dif_3 = rand()%1000+1;
产生1到1000之间的随机数
return dif_3;
}
void menu_1() 主界面代码
{
不同选项对应不同难度
int i;
{
clrscr();
for(i=0;i<7;i++)
printf(
printf(
pr
intf(
printf(
产生在1到10范围内的随机数
printf(
产生在1到100范围内的随机数
printf(
产生在1到1000范围内的随机数
printf(
退出程序
}
}
int menu_in()
{
int choose;
printf(
scanf(
选择对应函数
return choose;
}
void test(int
gess)
{
char num=NULL;
char
newchoose=NULL;
int sum=1;
int tum;
4--Exitnn
输入数字,
14
C语言课程设计
----猜数字
long ti;
system(
clrscr();
清空屏幕内容
srand((unsigned)time(NULL));
计时器开始运行
t=time(NULL);
计时器统计秒数赋值给t
int temp = (num-'0');
while(temp!=gess)
{
游戏主程序
printf(
printf(
printf(
scanf(
if(num == 'e')
输入小写e,统计猜测次数和所用时间,回到主界面
{
tum = sum-1;
ti=time(NULL)-t+1;
printf(
再次确认是否返回主界面
printf(
printf(
scanf(
if(newchoose
== 'y')
输入小写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
else if(newchoose
== 'Y') 输入大写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
}
else
if(num == 'E') 输入大写E,统计猜测次数和所用时间,回到主界面
{
tum = sum-1;
ti=time(NULL)-t+1;
printf(
printf(
printf(
15
C语言课程设计----猜数字
scanf(
if(newchoose == 'y')
输入小写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
else if(newchoose
== 'Y') 输入大写Y返回主界面
{
printf(
显示猜测次数和所用时间,退回主界面
printf(
break;
}
}
temp =
num-'0';
if(temp>gess)
比较输入数字与随机数的大小,并输出比较情况
{
system(
clrscr();
清空屏幕
printf(
输出提示语,猜测数字太大
sum++;
}
else if(temp
system(
clrscr();
清空屏幕
printf(
输出提示语,猜测数字太小
sum++;
}
else
{
t=time(NULL)-t+1;
if(sum<3)
{printf(
猜中后统计猜测次数和所有时间,根据猜测次
数给出相应评价,按ENTER退回主界面
printf(
printf(
else
if(sum<5)
{printf(
printf(
16
C语言课程设计----猜数字
printf(
else
if(sum<7)
{printf(
printf(
printf(
else
if(sum<9)
{printf(
printf(
printf(
else
if(sum<11)
{printf(
printf(
printf(
else
if(sum<11)
{printf(
printf(
printf(
else
{printf(
printf(
printf(
}
}
getchar();
getchar();
}
void
main()
{
int choose;
while(1)
{
menu_1();
choose=menu_in();
对应主界面输入数字,运行不同函数
switch(choose)
{
case
1:
test(dif_1());
运行dif_1 函数程序,产生1到10范围内的随机数
break;
case 2:
test(dif_2());
运行dif_2 函数程序,产生1到100范围内的随机数
break;
case 3:
test(dif_3());
运行dif_3函数程序,产生1到1000范围内的随机数
break;
case 4:
17
C语言课程设计
----猜数字
exit(0); 退出程序
break;
default:
printf(
Choose error!n
输入错误数字会弹出提示并要求重新输入,直至输入正确
printf(
getchar();
getchar();
break;
}
}
}
18
C语言课程设计----猜数字
19