C语言课程设计-猜数字游戏
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
C语言课程设计----猜数字
摘要
该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游、排行榜查看、帮助等主要功能。当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确介位置不正确的数字个数。如果用户猜数字的次数超过10次,则提示用户游戏失败,如果在10次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前一名,则计入排行榜中,以便其他用户查看。在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示5名玩家的排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。
关键词:游戏模块 猜数字 四个不同的数字 排行榜
1
C语言课程设计----猜数字
目录
摘要………………………………………………………………1 1 绪论……………………………………………………………3 2 开发环境………………………………………………………3 3 需求分析………………………………………………………3 4 系统设计………………………………………………………4
4.1 总体设计……………………………………………...…..4
4.2 系统
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
描述………………………………………...…..7
4.3 详细设计…………………………………………..…….8 5 测试…………………………………………………………..12 6 结论…………………………………………………………..13 参考文献……………………………………………………..…14
2
C语言课程设计----猜数字
一, 绪论:
猜数游戏的目标是按照设定的游戏规则为玩家提供一个简单而愉快的游戏界面,同时给玩家一些特定的功能,便于更好的使用该游戏软件。
在对本程序的实现过程中,将各个功能分别由不同的函数来实现,从而完成了对本程序的模块划分。该游戏共分为4个模块,分别是游戏模块,查询模块,帮助模块,退出模块。围绕这4个模块,大量函数,互相调用,如:StartProgram();SortByName();PrintHelp();
等等,还用了大量的文件指针,文件的读写与存储。
本程序在实现游戏的基本功能同时,还提供了查询与帮助的功能,因此玩家可以更好的适应这个游戏,也达到了设计这个游戏的目的了。而设计的重点在于随机数字的产生与游戏的提示,这两个方面的设计决定了程序运行的正确性和质量。
二,.开发环境:
开发语言:C语言。C语言功能丰富,表达力强,使用灵活,应用面广,目标程序效率高,可移植性好,既有高级语言的优点,又有低级语言的许多优点。
开发工具:VC++6.0.VC++6.0速度快 功能强大稳定兼容性强调试方便. 三,需求分析:
猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户提供一个游戏的平台。并且,该游戏提供了给用户计分的功能,并能对每个参与游戏的用户进行成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进行更新。
功能需求描述:
猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并提供相应的帮助功能。游戏规则如下。
1, 游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的
值和位置顺序。如果数字和位置顺序均正确,则猜数字成功。
2, 玩家有10次机会猜数字的机会,如果10次之内仍未猜出正确的数字值和数字的位置顺
序,则提示用户游戏失败。
3, 一旦玩家在10次的次数限制内猜出正确的数字值和位置顺序,则赢得游戏。 4, 当玩家赢得游戏后,会与排行榜中的前五名玩家的游戏记录比较,如果排名能够进入前
五名,则更新排行榜,使当前玩家成为入榜选手。
5, 计分规则:猜数字所用次数即为分数,所以分数越少证明玩家水平越高,排行榜中也是
排列分数最少的前五名选手。
本游戏软件需要实现以下一些基本功能。
1, 游戏区:玩家可以在游戏区逐次猜数字,系统会给玩家每次猜数字后的提示,包括数值,
位置均正确的数字个数和数值正确,但位置不正确的数字个数。
2, 刷新排行榜:当玩家成功完成一轮猜数字游戏后,可以通过和排行榜中相应记录的比较
判断玩家是否可以进入排行榜,进入排行榜的资格是游戏成绩在前五名的玩家。 3, 查看排行榜:玩家可以查看当前排行榜中的排名顺序,从而确定自己的游戏目标。排行
榜的查看按一定的顺序显示给用户,便于查看。
4, 清除排行榜:玩家可以选择清除排行榜功能,使得排行榜的玩家名字和玩家游戏的记录
3
C语言课程设计----猜数字
从系统中清除,只留下系统默认的玩家名(player)和系统默认记录10次。 5, 帮助:玩家通过帮助功能了解游戏规则和排行榜设置规则。
四,系统设计:
?总体设计:
在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计过程中,给出猜数字的模块结构,流程描述及界面布局,并使得系统的总体设计符合软件
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
中总体设计的基本原则。
?开发与设计的总体思想
猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。
系统采用结构化的设计方法进行设计,采用C语言进行开发。
2.系统模块设计结构图
依据需求分析结果,猜数字游戏可以分为五个模块:游戏区模块,排行榜模块,产生新记录模块,读取新记录模块和帮助模块。系统模块结构如图(A)所示。
游戏区
排行榜
猜数字游戏 产生新记录
读取最新记录
帮助模块
(A) 3.模块设计
?游戏区模块
该模块为玩家提供猜数字游戏的主体功能,有系统产生4个随机排列的整数,并给用户10次机会猜测数字的数值和排列顺序。如果用户在10次内没有猜出正确的结果,则提示用户游戏失败,否则提示用户游戏成功,并调用产生新记录模块对玩家游戏成绩进行处理。该模块有3个子功能。
?产生原始数字:由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进行猜数字游戏。
?游戏提示:用如1A2B的形式提示玩家当前猜数字的匹配情况,例如,1A表示玩家猜测
4
C语言课程设计----猜数字
的数字中有1个是数值与系统产生的原始数字相符合,并且位置也完全符合,2B表示玩家猜测的数字中有2个与系统产生的原始数字相符合,但位置不符。用这种方式提示用户对自己的猜测进行调整。
?原始数字显示:当用户在10次之内仍未能猜出正确的原始数字和顺序时,系统提示玩家失败,并给玩家显示出原始数字和顺序。
模块功能树如图(B)所示.
产生原始数字
游戏提示 游戏区
原始数字显示
(B)
?排行榜模块
该模块为玩家提供排行榜的浏览功能和清除功能,包括按玩家成绩顺序浏览,按玩家姓名浏览和清除排行榜三个子功能。
?按玩家成绩顺序浏览子功能中,将玩家的姓名,游戏成绩按猜数字次数从少到多的顺序显示,即将玩家记录从高到低显示。
?按玩家姓名浏览的子功能中,为了玩家便于查找到自己的游戏成绩,将玩家的姓名和猜数字次数记录按照玩家姓名的字母表顺序列表显示。
?清除排行榜:当用户选择清除排行榜功能时,系统会将所有玩家的历史记录和玩家姓名一起从排行榜中清除,在排行榜中只留下默认的游戏记录和默认游戏玩家姓名,即系统默认玩家姓名:player和系统默认记录次数10次。
排行榜模块功能树如图(C)所示。
按玩家成绩浏览
排行榜
清除排行榜
(C)
?产生新的记录模块
5
C语言课程设计----猜数字
该模块的功能是当玩家成功完成游戏时,判断用户可否进入排行榜,如果可以进入,则刷新排行榜的记录,将当前玩家的游戏记录写入排行榜,并将排行榜目前结果显示给用户。 产生新记录模块功能树如图(D)所示。
判断用户可否进入排行榜
入榜玩家刷新排行榜
产生新记录
显示当前排行榜状况
(D)
?读取最好记录模块
读取最好记录模块的主要功能是当用户选择游戏开始选项时,首先提示用户目前排行榜中的最好游戏记录,如果目前没有排行榜记录,则初始化排行榜,给出系统默认的玩家姓名和默认的游戏记录。如果当前排行榜中有玩家记录,则判断最好记录显示给用户。 读取游戏记录模块功能树如图(E)所示。
判断有无游戏记录
初始化排行榜
读取游戏记录
获取最好记录
游戏开始时显示最好记录
(E)
?帮助模块
帮助模块提供的功能时当前玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户猜数字的游戏规则和游戏相关提示的含义。
?系统流程描述
6
C语言课程设计----猜数字
系统的主体处理流程如图(F)所示。
开始
功能选择
按
成
绩开
浏帮始退览助游出 排戏 行
榜
显示排行榜最好记录
产生原始数字
是 否 产生新记录 提示成功 是否10次是否成功
之内 否
是
提示玩家游戏失败 用户猜数字
否
是 产生新记录 提示成功 是否成功
结束
(F)
7
C语言课程设计----猜数字
(三)详细设计
1.游戏模块设计
?模块描述
游戏区模块是猜数字游戏软件的核心部分,用户进入模块后,系统会调用读取最好记录模块的功能,向用户显示目前排行榜中榜首玩家姓名和成绩。之后,系统产生四个按任意顺序拍了的随机数,并提供给玩家10次机会,提示玩家进行猜数字过程,并在玩家每一次猜数后都给玩家当前猜测结果的提示。A表示位置和数值均正确,B表示数值正确但位置不正确。当玩家猜测次数超过10次,则提示玩家失败,如在10次内猜对,则祝贺玩家并调用产生记录模块,看玩家是否进入排行榜。
?源文件定义
Start.c
Score..h
?函数的声明
?vido mian()函数
功能:软件执行的入口,在函数所在的程序头部包含了部分系统必需的头文件和完成其他功能的源文件。在该函数中还提供了系统功能选择的平台,提示用户系统可用的功能有哪些和这些功能的选项代码。并给用户提供了输入功能选项代码的接口,当用户输入选项代码后,则显示给用户相应的功能处理界面或结果。
输入:用户想要使用的系统功能代码。
处理:
a.接受玩家输入的选项代码
b.引导玩家进入相应的功能界面。
输出:
a. 系统功能选择平台。
b. 相应的功能界面
2. 游戏功能模块
开始游戏和进行游戏过程,调用ReadRecord()/*读取破记录的函数 */,提示玩家依次猜数字,每次给出提示。在10次内未猜出则失败;成功,则调用ResetRecord(n3)/*看是否能进入排行榜*/。
程序:
void StartProgram()
{
ReadRecord();
n1=0;
n3=0;
getnumber();
printf("\n请输入你猜测的数字:");
while(n1<4&&n3<10)
{
++n3;
n1=0;
n2=0;
for(i=1;i<=4;i++)
8
C语言课程设计----猜数字
{
printf("\n请输入第 %d 位数字:",i);
scanf("%d",&b[i]);
}
for(i=1;i<=4;i++)
{
if(a[i]==b[i])
{
n1++;
continue;
}
for(j=1;j<=4;j++)
if(b[i]==a[j]) n2++;
}
printf("数值正确且位置正确的数字个数: A.%d\n",n1);
printf("数值正确但位置不正确的数字个数:B.%d\n",n2);
printf("你已经猜测了 %d 次\n",n3);
if(n1==4) break;
}
if(n3>=10)
printf("你失败了 ,答案是: %d %d %d %d",a[1],a[2],a[3],a[4]);
else
{
printf("恭喜你!你在 %d 次内猜出了正确答案\n",n3);
ResetRecord(n3);
}
printf("请按任意键继续...\n");
fflush(stdin);
getch();
}
void getnumber()
{
srand( (unsigned)time( NULL ) );
for(i=1;i<=4;i++)
{
loop2:
{
a[i]=rand()%10;
for(j=i-1;j>=1;j--)
if(a[i]==a[j]) goto loop2;
}
}
}
9
C语言课程设计----猜数字 3.排行榜模块
函数声明
?.void SortBy Score()函数
功能:按玩家成绩浏览排行榜信息。列表显示至屏幕。 输入:在系统功能选择界面中输入该功能的功能选项代码。 处理:
a. 读取排行榜文件。
b. 将文件中排行榜记录存入数组。
c. 将数组中数据用选择法排序。
d. 将排序后数据重新写入排行榜
e. 将排序好的文件列表输入到屏幕
输入:按成绩排序好的排行榜列表。
程序:
void SortByScore()
{
int i,j,k;
player TempS;
player s[5];
int recNumber=0;
char DataFile[10]="record";
FILE *fp=NULL;
//clrscr();
system("cls");
fp=fopen(DataFile,"rb");
if(fp==NULL)
{
printf("\n打开文件 %s 失败 !按任意键结束.\n",DataFile);
perror("Open file fail");
fflush(stdin);
getch();
return;
}
while(fread(&s[recNumber],sizeof(player),1,fp)!=(int)NULL)
{
recNumber++;
}
fclose(fp);
if(recNumber>1)
{
for(i=0;i
s[j].score) k=j;
}
if(k!=i)
{
strcpy(TempS.name,s[k].name);
TempS.score=s[k].score;
strcpy(s[k].name,s[i].name);
s[k].score=s[i].score;
strcpy(s[i].name,TempS.name);
s[i].score=TempS.score;
}
}
fp=fopen(DataFile,"wb+");
if(fp==NULL)
{
printf("\n打开文件 %s 失败!按任意键结束.\n",DataFile);
perror("Open file fail");
fflush(stdin);
getch();
return;
}
for (i=0;i
本文档为【C语言课程设计-猜数字游戏报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。