完整版文松松17号C语言毕业课程设计猜数字游戏Word文档下载推荐.docx
- 文档编号:21185415
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:23
- 大小:25.74KB
完整版文松松17号C语言毕业课程设计猜数字游戏Word文档下载推荐.docx
《完整版文松松17号C语言毕业课程设计猜数字游戏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整版文松松17号C语言毕业课程设计猜数字游戏Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
8.在2011年1月10日之前,请各班学习委员收齐课程设计报告和源
三、进度安排
第一周星期四:
课题讲解,查阅资料
第二周 星期一:
总体设计,详细设计
星期二:
编程,上机调试、修改程序
星期三:
上机调试、完善程序
星期四:
星期五:
答辩
星期六-星期天:
撰写课程设计报告
课程设计题目:
设计课题:
猜数字游戏
一、问题描述:
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:
1、本游戏显示这样的菜单:
(1)随机产生数据
(2)用户输入数据
(3)退出游戏
2、游戏成功与否都能返回主菜单
三、算法提示:
1、数据结构:
数组
2、用简单的程序设计方法
四、测试数据:
测试数据:
3792
第一次输入:
1234
0A2B
第二次输入:
5678
0A1B
第三次输入:
0867
第四次输入:
9786
1A1B
第五次输入:
1794
2A0B
第六次输入:
2793
2A2B
第七次输入:
4A0B
游戏成功!
!
五、其它:
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:
破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
调用积分函数,若你一次完成,则记录7分,若你2次完成则记录6分,一次类推,大于8次则不记录分数.
课程设计报告规范
一、需求分析
1、程序的功能。
2、方案选定
二、概要设计
1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;
每个模块的功能。
2、课题的总体数据结构和数据库结构;
即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
三、详细设计
1、采用C语言定义相关的数据类型。
2、写出各模块的类C码算法。
3、画出函数的调用关系图。
四、调试分析以及设计体会
1、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
2、程序调试中遇到的问题以及解决问题的方法。
3、课程设计过程经验教训、心得体会。
五、使用说明
用户使用手册:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
六、书写格式
1、设计报告要求用A4纸打印成册:
2、标题和正文要求见附1
3、封面格式如下页。
附录
1、参考书目
2、源程序清单(带注释)
附1:
●课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
●正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;
行距为22。
●正文的内容:
一、课题的主要功能;
二、课题的功能模块的划分(要求画出模块图);
三、主要功能的实现(至少要有一个主要模块的流程图);
四、程序调试;
五、总结;
六、附件(所有程序的原代码,要求对程序写出必要的注释)。
●正文总字数要求在5000字以上(不含程序原代码)。
第一章绪论...........................................................................................9
第二课课题的主要功能………………………………………...…..10
2.1系统概述........................................................11
2.2功能需求描述................................................12
3.3各个函数的主要功能…………………………….………...….14
第三章主要的功能模块的划分………………………..….….…....13
3.1模块设计........................................................................................13
3.2程序的模块组成…………………………………….…………14
3.3系统的总体框图……………………………………..……..…15
3.4相关的数据类型.........................................................................16
3.5函数间的调用图............................................................................16
3.6流程图…………………………..………………………................…17
第四章程序的调试………………………………………………....18
4.1调试分析……………………………………………………..….18
4.2使用说明.......................................................................................19
4.3运行结果截屏及说明………………………………………...21
第五章总结……………………………….….………………..…....24
第六章附件………….….……………………………………...…....27
1、参考文献...........................................................................................27
2、源程序………………..……………………..….…..…..….….....28
3、评分标准………………………………………………...45
第一章
绪论
第二章
课题的主要功能
猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户进行成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进行更新。
1、系统概述
该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游、排行榜查看、帮助等主要功能。
当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确介位置不正确的数字个数。
如果用户猜数字的次数超过8次,则提示用户游戏失败,如果在8次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前一名,则计入排行榜中,以便其他用户查看。
在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示5名玩家的排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。
在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。
2、功能需求描述
猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并且提供相应的帮助功能。
游戏规则如下。
①游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。
如果数字值和位置顺序均正确,则猜数字成功。
②玩家有8次猜数字的机会,如果在8次之内仍末猜出正确的数字值和数字位置顺序,则提示用户游戏失败。
③一旦玩家在8次的次数限制内猜出正确的数字值和位置顺序,则赢得游戏。
④当玩家赢得游戏后,会与排行榜中的前五名玩家的游戏记录比较,如果排名能够进入前五名,则更新排行榜,使当前玩家成为入榜选手。
⑤记分规则:
猜数字所用次数即为分数,所以分数越少证明玩家水平越高,排行榜中也是排列份数最少的前五名选手。
本游戏软件需要实现以下一些基本功能。
①游戏区:
玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。
②刷新排行榜:
当玩家成功完成一轮猜数字游戏后,可通过和排行榜中相应记录的比较判断玩家是否可以进入排行榜,进入排行榜的资格游戏成绩在前五名的玩家。
③查看排行榜:
玩家可以查看当前排行榜中的排名顺序,从而确定自己的游戏目标。
排行榜的查看按一定顺序显示给用户,便于查看。
④清除排行榜:
玩家可以选择清除排行榜功能,使得排行榜上的玩家姓名和玩家游戏记录从系统中清除,只留下系统默认的玩家名(player)和系统默认记录8次。
⑤帮助:
玩家通过帮助功能了解游戏规则和排行榜设置规则。
⑥退出:
玩家想结束并退出游戏系统。
3、各个函数的主要功能:
随机产生4个数的函数:
随机产生4个数字。
randomize()是c函数库提供的一个函数,功能给产生随机数的进行初始化
清除文本模式窗口
第三章
主要的功能模块的划分
在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。
开发与设计的总体思想
猜数字游戏是一种大众娱乐游戏,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每次进行猜数字操作之后的游戏提示,这两方面的规则设计往往决定了软件运行的正确性和质量。
1、模块设计:
1)、游戏区模块
该模块为玩家提供猜数字游戏的主休功能,由系统自动产生4个随机排列的整数,并给用户8次机会猜测数字的数值和排列顺序。
如果用户在8次之内没有猜出正确的结果,则提示用户游戏失败,否则提示用户猜数字成功,并调用产生新记录模块对玩家游戏成绩进行处理。
(因精力有限且只能用画图来画个框架,所以就不再有图了)
①产生原始数字:
由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进行猜数字游戏。
②游提示:
提示用户数值和位置全对的数字个数,和只有数值但位置不对的数字个数。
③原始数字显示:
当用户在8次之内仍未能猜出原始数字和顺序时,系统提示玩家失败,并给玩家显示出原始数字和顺序。
2)、排行榜模块
该模块为玩家提供排行榜的浏览和清除功能,包括按玩家成绩顺序浏览、按玩家姓名浏览和清除排行榜3个子功能。
①按玩家成绩顺序浏览子功能中,将玩家的姓名、游戏成绩按猜数字次数从少到多的顺序列表显示,即将玩家记录从高到底显示。
②按玩家姓名浏览的子功能中,为了玩家便于查找到自己的游戏成绩,将玩家的姓名和猜数字次数记录按照玩家姓名的字母顺序列表显示。
③清除排行榜:
当用户选择清除排行榜功能时,系统会将所有玩家的历史游戏记录和玩家姓名一起从排行榜中清除,在排行榜中只留下默认的游戏记录和默认的玩家姓名,即系统默认玩家姓名player和系统默认记录8次。
3)、产生新记录模块
该模块的功能是当玩家成功完成游戏时,判断用户可否进入排行榜,如果可以进入,则刷新排行榜中的记录,将当前玩家的游戏记录写入排行榜,并将排行榜目前结果显示给用户。
4)读取最好记录模块
读取最好记录模块的主要功能是当用户选择游戏开始选项时,首先提示用户目前排行榜中的最游戏记,如果目前没有排行的玩家记录,则初始化排行榜,给出系统默认的玩家姓名和默认的游戏记录。
如果目前排行榜中有玩家记录,则判断出最好记录显示给用户。
5)、帮助模块
帮助模块提供的功能是当玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户猜数字的游戏规则和游戏中相关提示的含义。
数据结构设计
猜数字游戏软件涉及到对玩家信息和排行榜的操作。
为将玩家的姓名和游戏成绩描述成一个玩家的两个重要方面,使用C语中的结构体来描述
2、程序的模块组成:
主函数:
intmain()
创立结构体:
structp1()
使数字产生循环:
intrand1()
调用读取破记录:
goread()
输入数字:
voidinput1();
初始化随机数发生器:
getnumber()
清除文本模式窗口:
clrscr();
读入字符串的时候,直到回车为止:
gets()
3、系统的总体框图
图4-1
4、相关的数据类型:
#include<
stdio.\n\n\n\n"
);
*循环猜数*
while(n1<
4&
&
n3<
10)
{
++n3;
n1=0;
n2=0;
*提示用户输入四个要猜的4位整数*
for(i=1;
i<
=4;
i++)
printf("
\ninputtheNO.%dnumber:
"
i);
scanf("
%d"
&
b[i]);
}
for(i=1;
{
if(a[i]==b[i])*位置数字都对的*
{
n1++;
continue;
}
for(j=1;
j<
j++)*计算数字相同但位置不相同的个数*
if(b[i]==a[j])n2++;
printf("
correctvalueandcorrectposition:
%d\n"
n1);
correctvaluebutincorrectnessposition:
%d\n"
n2);
you"
n3);
if(n1==4)break;
*如果四次都猜对了就结束循环。
*
}*while循环结束*
if(n3>
=10)
printf("
Youblewit,theansweris%d,%d,%d"
a[1],a[2],a[3],a[4]);
else
{
Configrafulastions!
Youfinishitby%dtimes\n"
intResetRecord(n3);
}
printf("
pressanykeytocontinue...\n"
fflush(stdin);
getch();
voidgetnumber()*随机产生四个数的函数*
intrandomize();
*产生随机数的初始化函数*
loop2:
*产生的随机数处理为1位的整数*
a[i]=rand()%10;
*rand函数用于产生随机数*
*循环判断,随机数要求不重复,如果重复则重新产生*
for(j=i-1;
j>
=1;
j--)
if(a[i]==a[j])gotoloop2;
}
#ifndefPLAYER
#definePLAYER
#include<
stdio.(DataFile,"
rb"
if(fp==NULL)
\nOpenfile%sfial!
Endwithanykey.\n"
DataFile);
perror("
Openfilefail"
fflush(stdin);
getch();
return;
*将文件中要排序的信息存入结构体数组*
while(fread(&
s[recNumber],sizeof(player),1,fp)!
=(int)NULL)
recNumber++;
fclose(fp);
*如果文件中有记录,则将各记录按游戏成绩值排序*
if(recNumber>
1)
for(i=0;
recNumber-1;
k=i;
for(j=i+1;
recNumber;
j++)
{
if(strcmp(s[k].name,s[j].name)>
0)
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)
\nOpenfile%sfial!
perror("
fflush(stdin);
getch();
return;
for(i=0;
if(fwrite(&
s[i],sizeof(player),1,fp)!
=1)
\nwritefile%sfail!
writefilefail"
fflush(stdin);
getch();
return;
fclose(fp);
*显示排序后的文件*
theplayer'
sscoreasfolow:
\n"
fp=fopen(DataFile,"
perror("
fflush(stdin);
getch();
return;
\nName\t\tscore\n"
TempS,sizeof(player),1,fp)!
%s\t\t%d\n"
TempS.name,TempS.score);
pressanykeytocontinue..."
fflush(stdin);
getch();
#include<
stdio."
+you"
+everytimethesystemwill"
+correctvalueandcorrectpositioncount+\n"
+correctvaluebutincorrectnesspositioncount+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 松松 17 语言 毕业 课程设计 数字 游戏