C课程设计报告猜数字游戏文档格式.docx
- 文档编号:21630820
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:23
- 大小:308.30KB
C课程设计报告猜数字游戏文档格式.docx
《C课程设计报告猜数字游戏文档格式.docx》由会员分享,可在线阅读,更多相关《C课程设计报告猜数字游戏文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
菜单选择
Handle_menu
菜单处理
Tiptop_register
最高分记录
Tiptop_out
输出最佳排行
Grade_amend
等级更换
Game_explain
游戏说明
Game_main
游戏
Build_number
生成数字
Course_in_out
游戏进程获取及输出
Time_control
时间控制
Game_result
游戏结果处理输出
ASK
宏定义申请内存
结构声明
库函数及函数原型声明
引用库函数及函数
#include<
time.h>
dos.h>
stdio.h>
stdlib.h>
string.h>
#include<
windows.h>
//结构体
#defineMAXSIZE20
typedeflongintElemType;
//定义结构体tiptop,存放游戏者的最高分等信息
typedefstructtiptop{
ElemTypedata;
charname[MAXSIZE];
chargrade[MAXSIZE];
intyear;
intmon;
intday;
charwday[MAXSIZE];
inthour;
intmin;
intsec;
}tiptop;
//全局变量
intD;
//D为等级设置变量
//函数声明
voidMenu_select();
//选择菜单函数
intHandle_menu();
//处理菜单函数
voidTiptop_register(int);
//记录最高分函数
voidTiptop_out();
//输出最佳排行函数
voidGrade_amend();
//设置游戏等级函数
voidGame_explain();
//输出游戏说明函数
voidGame_main();
//开始游戏中心函数
int*Build_number();
//获取系统随机数字函数
voidCourse_in_out();
//获取游戏者游戏数据和输出游戏进程结果函数
intTime_control();
//时间控制函数
voidGame_result(int);
//游戏结果处理输出函数
//************
//处理菜单函数
intHandle_menu()
{
intn;
printf("
\t**************************\n"
);
\t**\t1:
开始游戏\t**\n"
\t**\t2:
等级设置\t**\n"
\t**\t3:
最佳排行\t**\n"
\t**\t4:
游戏说明\t**\n"
\t**\t5:
退出\t**\n"
\t请输入相应序号选择相应菜单:
\t"
scanf("
%d"
&
n);
if(n<
1||n>
5)
n=0;
getchar();
//屏蔽回车
system("
cls"
returnn;
}
//****************
//设置游戏等级函数
voidGrade_amend()
FILE*fp;
\t******************************\n"
\t************1:
初级************\n"
\t************3:
高级************\n"
\t请输入相应序号,选择相应的等级:
loop:
D);
if(D<
1||D>
3)
{
printf("
\t设置输入有误!
请重新输入:
gotoloop;
}
if((fp=fopen("
D.txt"
"
w"
))==NULL)
打开D.txt文件失败!
exit
(1);
fwrite(&
D,sizeof(int),1,fp);
fclose(fp);
if(D==1)
\t等级设置为初级成功!
\n"
if(D==3)
\t等级设置为高级成功!
//输出游戏说明函数
voidGame_explain()
\t******************************************************\n"
\t①:
游戏开始,系统随机产生一个数字不重复的N位数。
N的数\n"
\t字大小与等级有关:
\t②:
开始猜测数据填在相应位置按回车提交。
提交的数据应与\n"
\tN的大小一致,当数据个数大于N时,只取前N位;
并且不能填入\n"
\t重复的数字。
\t③:
系统会将您提交的数与它自动产生的数进行比较,结果显\n"
\t示成“*A*B”形式。
其中A代表数字正确相应位置也正确,B代\n"
\t表数字正确但位置不正确。
比如:
2A2B表示您有2个数字的位置\n"
\t正确且数值也正确,除此以外,您还猜对了2个数字,但位置不\n"
\t对,即您已经猜出所有数据,不过有两个数据位置对调了!
即\n"
\t您已经猜中四个数字,其中有两个数字的位置错了。
\t④:
您共有一定次数的猜测机会,在规定次数内之内完成,使\n"
\t结果为“NA0B”,则游戏成功。
其中猜测次数\n"
\t⑤:
按完成游戏所用的时间和次数来计算你应当得到的分数,\n"
\t若游戏者得分比系统已经保存的分数的最低分高,将提示要求\n"
\t输入游戏者信息,并且会保存在最佳排行之中。
//输出最佳排行函数
voidTiptop_out()
inti;
tiptopp,q,r;
tiptop1.txt"
r"
打开tiptop1.txt文件失败!
fread(&
p,sizeof(structtiptop),1,fp);
tiptop3.txt"
打开tiptop3.txt文件失败!
r,sizeof(structtiptop),1,fp);
if(p.data==0&
&
q.data==0&
r.data==0)
\t暂无最高分信息!
else
\t猜数字游戏的最佳排行榜如下:
\n\n"
\t等级\t姓名\t分数\t游戏时间\n"
if(p.data!
=0)
{
printf("
\t%s\t%s\t%d\t"
p.grade,p.name,p.data);
}
if(q.data!
q.grade,q.name,q.data);
if(r.data!
r.grade,r.name,r.data);
if(p.data==0)
\n初级暂无最高分信息!
if(r.data==0)
\n高级暂无最高分信息!
//**************
//记录最高分函数
voidTiptop_register(intS)
tiptopn;
char*wday[]={"
星期天"
星期一"
星期二"
星期三"
星期四"
星期五"
星期六"
};
time_ttimep;
structtm*t;
\t恭喜您!
\t您获得本游戏的最高分\n"
//获取名字
\t请输入你的姓名:
%s"
n.name);
//获取时间
time(&
timep);
t=gmtime(&
t->
tm_year=1900+t->
tm_year;
tm_mon=1+t->
tm_mon;
tm_hour=8+t->
tm_hour;
n.year=t->
n.mon=t->
n.day=t->
tm_mday;
strcpy(n.wday,wday[t->
tm_wday]);
n.hour=t->
n.min=t->
tm_min;
n.sec=t->
tm_sec;
//获取等级
strcpy(n.grade,"
初级"
高级"
//获取分数
n.data=S;
if((fp=fopen("
\t打开tiptop1.txt文件失败!
exit
(1);
fwrite(&
n,sizeof(structtiptop),1,fp);
fclose(fp);
\t打开tiptop3.txt文件失败!
int*c1;
//产生的数保存在指针c中
intA,B;
//AB均为游戏重要参数
intNUM;
//NUM为需要猜测的数据个数
intTIME;
//TIME为猜数字共有的次数
longintS;
//S为游戏积分
//开始游戏中心函数
voidGame_main()
inttime;
NUM=D+2;
TIME=11-D;
\t您本次游戏等级为:
初级!
高级!
\t需要猜测的数字个数为:
%d,共有%d次猜测机会!
NUM,TIME);
time=Time_control();
Game_result(time);
//********************
//获取系统随机数字函数
int*Build_number()
inti,j,m;
time_tt;
c1=(int*)malloc(NUM*sizeof(int));
if(c1==NULL)
分配内存错误!
srand((unsigned)time(&
t));
for(i=0;
i<
NUM;
i++)
m=rand()%10;
//产生一个数字
if(i==0)
*c1=m;
else
for(j=0;
j<
i;
j++)
{
if(m==*(c1+j))//若原有数据之中已经有了与m相同的数字,则重新产生数字
{
i--;
break;
}
*(c1+i)=m;
}
\t您可以开始猜测了;
\t数字中间用空格隔开\n"
returnc1;
//****************************************
//获取游戏者游戏数据和输出游戏进程结果函数
voidCourse_in_out()
{
//游戏者猜测的数字
inta[5];
//游戏者猜测的数据构成的数组
intc[5];
int*p;
p=Build_number();
c[i]=*(p+i);
for(m=0;
m<
TIME;
m++)
if(m==(TIME-1))
\t**请注意:
**\n"
\t**仅剩下一次机会了!
\t**努力!
认真!
加油**\n"
\t请输入第%d次猜测的数字:
m+1);
for(j=0;
scanf("
a[j]=n;
A=0;
B=0;
for(i=0;
if(a[i]==c[i])
A++;
if(a[i]==c[j]&
i!
=j)
B++;
\t您本次猜测的结果为:
\t\t%dA%dB"
A,B);
//游戏成功控制退出猜测程序
if(A==NUM)
m=TIME;
//TIME改变,记录游戏总次数的数据
TIME=i;
//时间控制函数
intTime_control()
inta;
//游戏时间
time_tfirst,second;
first=time(NULL);
//获取系统时间
Course_in_out();
second=time(NULL);
//再次获取系统时间
a=(int)difftime(second,first);
returna;
//游戏结果处理输出函数
voidGame_result(intm)
tiptopp;
intS;
intmin,sec;
if(A!
=NUM)
S=0;
\t很遗憾,您游戏失败了.\n"
\t您本次游戏的积分为:
\t%d"
S);
\t继续努力哦!
//输出正确结果
\t是否输出正确结果?
\t1:
是\t\t\t2:
否"
\n\t"
i=0;
i);
if(i==1)
for(i=0;
printf("
*(c1+i));
\t是否继续游戏?
system("
Game_main();
Menu_select();
\t恭喜您游戏成功!
//积分
if(D==1)
n=11-TIME;
S=n*n*n*10-m;
if(D==3)
n=9-TIME;
S=n*n*n*n*n*10-m;
if(S<
10)
{
srand((unsigned)time(&
S=rand()%100;
//判断是否符合最高分条件
fread(&
if(S>
=(p.data))
Tiptop_register(S);
//******
//主函数
voidmain()
********************************************\n"
*************欢迎进入猜数字游戏*************\n"
**************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 数字 游戏