猜数游戏设计报告含代码Word格式.docx
《猜数游戏设计报告含代码Word格式.docx》由会员分享,可在线阅读,更多相关《猜数游戏设计报告含代码Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
![猜数游戏设计报告含代码Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/27/7d77c8bb-3c12-4ed3-9ac5-cd040ab75754/7d77c8bb-3c12-4ed3-9ac5-cd040ab757541.gif)
七、附录(完整源程序清单)……………………………………………6
八、评阅意见……………………………………………………………10
参考书目………………………………………………………………10
《高级语言程序设计》课程设计
――猜数游戏
一、需求分析
1.获取随机数(根据玩家要可获得不同范围的随机数)。
2.对玩家输入的数字进行判断大小,给出提醒以便玩家进一步选择。
3.玩家猜中时给出所用时间和游戏水平的判断,给出是否继续的提示及判断。
4.游戏在于娱乐,因此需要一个人性化的界面。
二、总体设计
2.1主函数:
选择游戏等级(获取不同范围的随机数范围越大难度越大);
对玩家输入的数字进行判断和提示;
算出所用时间在玩家猜中时给出其所用时间,对其水平的判断和是否继续的提示;
对玩家要求判断执行。
2.2主界面显示:
游戏界面显示和必要提醒文字的输出。
2.3结果输出界面显示:
结果界面显示;
输出玩家所用时间和水平评价;
输出是否继续的文字提醒。
2.4简单等级随机数获取:
获取1到1000内的随机数。
2.5中等等级随机数获取:
获取1到2000内的随机数。
2.6困难等级随机数获取:
获取1到10000内的随机数。
系统模块图
三、详细设计
3.1主界面显示函数
功能描述:
游戏界面显示和必要提醒文字的输出
主界面显示流程图
3.2main函数
功能描述:
函数参数说明:
clock_tc_start,c_end;
分别用定义开始时间和终止时间。
f1接收获得的随机数。
f2接收玩家输入的数字。
ch接收玩家输入的选择字符。
time表示玩家所用时间。
s[]必要的提醒和输出字符串。
函数调用关系描述:
wd1();
调用主界面显示函数。
getf1();
getf2();
getf3();
调用获取不同范围的随机数函数。
wd2();
调用结果输出界面显示函数。
main函数流程图
3.3结果输出界面显示函数
结果输出界面显示流程图
3.4简单(中等,困难)等级随机数获取函数
time_tt;
定义时间变量。
srand((unsigned)time(&
t));
以系统时间为种子,初始化rand()。
rand()%1000;
获取0到999的随机数。
简单(中等,困难)等级随机数获取流程图
四、测试
1.在游戏开始输入等级选择字符时,如果输入a,b,c以外的字符游戏就会出现错误,此时随机数为0。
为了改正从而达到输入其他字符时从新提示要输入a,b,c。
我用了不常用的goto函数。
判断为其他字符时,函数从新回到最初。
2.开始时,用do,while函数做到了在一轮游戏过后输入y可以继续游戏,但没有做到输入n结束游戏,此时输入除y的字符都会终止。
我将要达到的目标分成了两步。
第一步,当输入除y,n外的字符时,再次输出游戏继续输y退出输n的提醒。
我用一个for(;
ch!
='
n'
&
y'
;
)的循环,只有当遇y或n时才能跳出循环,否则要继续输入选择。
第二步,为了实现输入n时终止程序,我将do,while函数放在循环for(;
)内,并在while后加入了语句if(ch=='
)break;
这样便做到了输入n时跳出循环继而终止了程序。
五、设计心得与总结
1.猜数游戏是计算机给出数字有玩家进行猜测,首先是要计算机给出数字而且是随机的。
怎样获得随机数以前的学习中并没有遇到过。
在网上找到了随机数获取函数rand(),当然开始并不会用这函数每次随机数产相同,然后去找资料了解到计算机产生的随机数是伪随机数。
原来每次产生随机数都要一个随机种子。
进一步查找资料我了解到可以将系统时间转化为种子这需要srand函数将系统时间转化,写成语句就是srand((unsigned)time(&
。
最后成功获得了随机数。
2.游戏需要一个界面,这在以前的学习也未有遇到。
和随机数获取一样先去网上找但没有获得进展,无奈求助同学。
我选择了用矩形图形做界面。
在原界面上覆盖上矩形图形做界面。
3.作为一个游戏,界面上的文字要简单,每次的提醒要显眼。
为了做到这一点我先将原来的清掉然后再输出,这用到了clrscr();
语句。
4.最初程序完成很不完善,有许多漏洞需要改正。
比如,选择时输入规定字符之外的字符怎么办。
怎样做到只输入y,n来断定游戏是否继续。
这些在不断地调试中发现的。
(这些在标题四中有解释这里不多做解释)。
看到这个题目时意识到这里有没学过的东西,通过自己找资料问同学做成一个程序我有了一种小小的成就感。
做程序也好,其他的什么也好总会遇到自己不懂得,没接触过的。
这是一个挑战,通过自己一步步的努力完成时,是一种很大的进步不只是技术上的进步。
六、用户使用手册
6.1系统简介与功能介绍:
该程序基于win-tc编写,选用win-tc是界面设计所需。
随机产生一个数字,可根据玩家选择给出不同范围的数字。
玩家输入所猜数字时给出与真实数字的大小比较。
在玩家猜中时,可给出其所用时间,并给出评价。
最后,游戏的结束与继续可由玩家控制。
6.2用户操作说明、注意事项:
1.游戏开始选择游戏等级。
2.输入所猜数字,根据提示输入,直到输入与所给随机数相同。
3.猜中时系统会给出您所用时间和对您的评价和是否继续的提示,选择是否继续。
注意:
在游戏过程中猜数阶段只能输入数字,输入其他字符不予判断(这一点在游戏开始时会有提示文字)。
玩家在玩游戏时要注意看提示文字。
七、附录(完整源程序清单)
#include<
stdio.h>
/*准输入输出头文件*/
time.h>
/*时间函数*/
intf1,f2;
charch,*s[]={"
GUESSTHEDIGITALGAME"
"
GOODLUCK!
"
PLAYAGAIN(y/n)"
YOURRESULTS:
"
PLEASESELECTTHECLASS:
A,B,C(Simple=A,Medium=B,Difficulty=C)\n"
(Onlyallowedtoenternumbers)\n"
};
wd1()
{
textbackground(6);
clrscr();
window(25,3,55,4);
textbackground
(1);
textcolor(12);
cputs(s[0]);
/*主界面背景设置*/
window(25,5,55,6);
textbackground
(2);
textcolor(15);
cputs(s[1]);
window(25,6,55,16);
textbackground(4);
}
wd2()
window(15,17,65,19);
/*结果输出界面*/
}
getf1()
time_tt;
/*系统时间定义*/
srand((unsigned)time(&
/*将系统时间强行转化作为随机种子*/
f1=1+rand()%1000;
/*获取1-1000内的随机数*/
getf2()
srand((unsigned)time(&
f1=1+rand()%2000;
/*获取1-2000内的随机数*/
getf3()
{
f1=1+rand()%10000;
/*获取1-10000内的随机数*/
main()
clock_tc_start,c_end;
/*时间函数*/
doubletime;
for(;
)
{
do
/*清屏*/
wd1();
cputs(s[4]);
cputs(s[6]);
lp1:
ch=getch();
if(ch=='
a'
)/*选择困难等级*/
cprintf("
Simple:
Pleaseenterthenumber\n"
);
printf("
%d"
f1);
}
elseif(ch=='
b'
getf2();
Medium:
c'
getf3();
Difficulty:
else
gotolp1;
/*在输入错误时重回输入*/
c_start=clock();
/*开始计时*/
while
(1)/*对玩家输入的数字进行地判断*/
scanf("
&
f2);
/*输入所猜数字*/
if(f1==f2)/*所猜数字与随机数比较*/
congratulations!
\n"
c_end=clock();
/*结束计时*/
break;
elseif(f2<
f1)
little\n"
continue;
/*输入不匹配时重输*/
big\n"
time=(double)(c_end-c_start)/18.55;
/*计算时间*/
/*结果输出界面显示*/
cputs(s[3]);
/*输出提示*/
if(time>
60.000000)printf("
Notgood!
/*判断评估*/
elseif(time<
30.000000)printf("
Good!
elseif(time>
30.000000||time<
50.000000)printf("
General\n"
printf("
TIME:
%.2fseconds"
time);
cputs(s[2]);
/*输出提示*/
/*接收控制*/
)/*继续玩游戏与否的判断*/
cputs(s[5]);
}while(ch=='
/*遇y结束*/
/*遇n结束*/
八、评阅意见
教师签名:
年月日
参考书目
[1]谭浩强,《C程序设计》,清华大学出版社,北京,2005年7月第3版