C课程设计报告猜数字游戏.docx_第1页
C课程设计报告猜数字游戏.docx_第2页
C课程设计报告猜数字游戏.docx_第3页
C课程设计报告猜数字游戏.docx_第4页
C课程设计报告猜数字游戏.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告课程设计名称:C语言猜数字游戏 目录一:设计目的 二:游戏规则及说明三:总体及函数设计(1)总体(2)主要流程图(3)文件及函数组成(4)函数描述四:源程序代码五:运行结果一:设计目的 加强对C语言的基础知识的牢固,复习C语言的一些基本算法的设计 通过对小型应用型C程序设计,了解程序设计的基本思路 通过趣味性程序的设计,增强对C语言学习的兴趣 通过编写程序发现C语言学习中存在的问题,以及找出解决问题的办法二:游戏规则以及说明游戏开始,系统随机产生一个数字不重复的N位数。您开始猜测数据填在正确位置按回车提交。系统会将您提交的数与它自动产生的数进行比较,结果显示成*A*B形式。其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。比如:2A2B表示您有2个数字的位置正确且数值也正确,除此以外,您还猜对了2个数字,但位置不对,即您已经猜出所有数据,不过有两个数据位置对调了!您共有一定次数的猜测机会,在规定次数内之内完成,使结果为“4A0B”,则游戏成功。否则游戏失败。三:总体及函数设计(1)总体:由多函数的形式实现程序的设计 (2)主要流程图:A主函数流程图:B开始游戏菜单的主要流程图:(3)文件及函数组成函数名或其他成分功能Main总控函数Menu_select菜单选择Handle_menu菜单处理Tiptop_register最高分记录Tiptop_out输出最佳排行Grade_ amend等级更换Game_ explain游戏说明Game_main游戏Build_number生成数字Course_in_out游戏进程获取及输出Time_ control时间控制Game_result游戏结果处理输出ASK宏定义申请内存结构声明结构声明库函数及函数原型声明引用库函数及函数五:源程序代码#include#include#include#include#include#include /结构体#define MAXSIZE 20typedef long int ElemType;/定义结构体tiptop,存放游戏者的最高分等信息typedef struct tiptopElemType data;char nameMAXSIZE;char gradeMAXSIZE;int year;int mon;int day;char wdayMAXSIZE;int hour;int min;int sec;tiptop;/全局变量int D;/D为等级设置变量/函数声明void Menu_select();/选择菜单函数int Handle_menu();/处理菜单函数void Tiptop_register(int);/记录最高分函数void Tiptop_out();/输出最佳排行函数void Grade_amend();/设置游戏等级函数void Game_explain();/输出游戏说明函数void Game_main();/开始游戏中心函数int*Build_number();/获取系统随机数字函数void Course_in_out();/获取游戏者游戏数据和输出游戏进程结果函数int Time_control();/时间控制函数void Game_result(int);/游戏结果处理输出函数/*/处理菜单函数/*int Handle_menu()int n;printf(t*n);printf(t*t1:开始游戏t*n);printf(t*t2:等级设置t*n);printf(t*t3:最佳排行t*n);printf(t*t4:游戏说明t*n);printf(t*t5:退出 t*n);printf(t*n);printf(t请输入相应序号选择相应菜单:);printf(t);scanf(%d,&n);if(n5)n=0;getchar();/屏蔽回车system(cls);return n;/*/设置游戏等级函数/*void Grade_amend()FILE *fp;printf(t*n);printf(t*1:初级*n);printf(t*3:高级*n);printf(t*n);printf(t请输入相应序号,选择相应的等级:t);loop:scanf(%d,&D);getchar();/屏蔽回车if(D3)printf(t设置输入有误!请重新输入:t);goto loop;if(fp=fopen(D.txt,w)=NULL)printf(打开D.txt文件失败!);exit(1);fwrite(&D,sizeof(int),1,fp);fclose(fp);if(D=1)printf(t等级设置为初级成功!n);if(D=3)printf(t等级设置为高级成功!n);/*/输出游戏说明函数/*void Game_explain()printf(t*n);printf(t*n);printf(t:游戏开始,系统随机产生一个数字不重复的N位数。N的数n);printf(t字大小与等级有关:n);printf(t:开始猜测数据填在相应位置按回车提交。提交的数据应与n);printf(tN的大小一致,当数据个数大于N时,只取前N位;并且不能填入n);printf(t重复的数字。n);printf(t:系统会将您提交的数与它自动产生的数进行比较,结果显n);printf(t示成“*A*B”形式。其中A代表数字正确相应位置也正确,B代n);printf(t表数字正确但位置不正确。比如:2A2B表示您有2个数字的位置n);printf(t正确且数值也正确,除此以外,您还猜对了2个数字,但位置不n);printf(t对,即您已经猜出所有数据,不过有两个数据位置对调了!即n);printf(t您已经猜中四个数字,其中有两个数字的位置错了。n);printf(t:您共有一定次数的猜测机会,在规定次数内之内完成,使n);printf(t结果为“NA0B”,则游戏成功。否则游戏失败。其中猜测次数n);printf(t:按完成游戏所用的时间和次数来计算你应当得到的分数,n);printf(t若游戏者得分比系统已经保存的分数的最低分高,将提示要求n);printf(t输入游戏者信息,并且会保存在最佳排行之中。n);printf(t*n);printf(t*n);printf(n);/*/输出最佳排行函数/*void Tiptop_out()int i;FILE *fp;tiptop p,q,r;if(fp=fopen(tiptop1.txt,r)=NULL)printf(打开tiptop1.txt文件失败!);exit(1);fread(&p,sizeof(struct tiptop),1,fp);fclose(fp);if(fp=fopen(tiptop3.txt,r)=NULL)printf(打开tiptop3.txt文件失败!);exit(1);fread(&r,sizeof(struct tiptop),1,fp);fclose(fp);if(p.data=0&q.data=0&r.data=0)printf(t暂无最高分信息!);printf(n);elseprintf(t猜数字游戏的最佳排行榜如下:n);printf(nn);printf(t等级t姓名t分数t游戏时间n);if(p.data!=0)printf(t%st%st%dt,p.grade,,p.data);if(q.data!=0)printf(t%st%st%dt,q.grade,,q.data);if(r.data!=0)printf(t%st%st%dt,r.grade,,r.data);if(p.data=0)printf(n初级暂无最高分信息!n);if(r.data=0)printf(n高级暂无最高分信息!n);/*/记录最高分函数/*void Tiptop_register(int S)FILE *fp;tiptop n;char *wday=星期天,星期一,星期二,星期三,星期四,星期五,星期六;time_t timep;struct tm *t;printf(t恭喜您!n);printf(t您获得本游戏的最高分n);/获取名字printf(t请输入你的姓名:);printf(t);scanf(%s,);/获取时间time(&timep);t=gmtime(&timep);t-tm_year=1900+t-tm_year;t-tm_mon=1+t-tm_mon;t-tm_hour=8+t-tm_hour;n.year=t-tm_year;n.mon=t-tm_mon;n.day=t-tm_mday;strcpy(n.wday,wdayt-tm_wday);n.hour=t-tm_hour;n.min=t-tm_min;n.sec=t-tm_sec;/获取等级if(D=1)strcpy(n.grade,初级);if(D=3)strcpy(n.grade,高级);/获取分数n.data=S;if(D=1)if(fp=fopen(tiptop1.txt,w)=NULL)printf(t打开tiptop1.txt文件失败!);exit(1);fwrite(&n,sizeof(struct tiptop),1,fp);fclose(fp);if(D=3)if(fp=fopen(tiptop3.txt,w)=NULL)printf(t打开tiptop3.txt文件失败!);exit(1);fwrite(&n,sizeof(struct tiptop),1,fp);fclose(fp);/全局变量int *c1;/产生的数保存在指针c中int A,B;/ AB均为游戏重要参数int NUM;/NUM为需要猜测的数据个数int TIME;/TIME为猜数字共有的次数long int S;/S为游戏积分/*/开始游戏中心函数/*void Game_main()FILE *fp;int time;if(fp=fopen(D.txt,r)=NULL)printf(打开D.txt文件失败!);printf(n);exit(1);fread(&D,sizeof(int),1,fp);NUM=D+2;TIME=11-D;if(D=1)printf(t您本次游戏等级为:初级!n);if(D=3)printf(t您本次游戏等级为:高级!n);printf(t需要猜测的数字个数为:%d,共有%d次猜测机会!,NUM,TIME);printf(n);time=Time_control();Game_result(time);/*/获取系统随机数字函数/*int*Build_number()int i,j,m;time_t t;c1=(int *)malloc(NUM*sizeof(int);if(c1=NULL)printf(分配内存错误!n);printf(n);exit(1);srand(unsigned) time(&t);for(i=0;iNUM;i+)m=rand()%10;/产生一个数字if(i=0)*c1=m;elsefor(j=0;ji;j+)if(m=*(c1+j)/若原有数据之中已经有了与m相同的数字,则重新产生数字i-;break;*(c1+i)=m;printf(n);printf(t您可以开始猜测了;n);printf(t数字中间用空格隔开n);printf(n);return c1;/*/获取游戏者游戏数据和输出游戏进程结果函数/*void Course_in_out()int i,j,m;int n;/游戏者猜测的数字int a5;/游戏者猜测的数据构成的数组int c5;int *p;p=Build_number();for(i=0;iNUM;i+)ci=*(p+i);for(m=0;mTIME;m+)if(m=(TIME-1)printf(t*请注意:*n);printf(t*仅剩下一次机会了!*n);printf(t*努力!认真!加油*n);printf(t请输入第%d次猜测的数字:t,m+1);for(j=0;jNUM;j+)scanf(%d,&n);aj=n;A=0;B=0;for(i=0;iNUM;i+)if(ai=ci)A+;for(i=0;iNUM;i+)for(j=0;jNUM;j+)if(ai=cj&i!=j)B+;printf(t您本次猜测的结果为:t);printf(tt%d A %d B,A,B);printf(n);/游戏成功控制退出猜测程序if(A=NUM)m=TIME;/TIME改变,记录游戏总次数的数据TIME=i;/*/时间控制函数/*int Time_control() int a;/游戏时间 time_t first, second; first=time(NULL);/获取系统时间Course_in_out();second=time(NULL);/再次获取系统时间 a=(int)difftime(second,first);return a; /*/游戏结果处理输出函数/*void Game_result(int m)FILE *fp;tiptop p;time_t t;int S;int n;int i;int min,sec;if(A!=NUM)S=0;printf(t很遗憾,您游戏失败了.n);printf(t您本次游戏的积分为:t%d,S);printf(t继续努力哦!n);/输出正确结果printf(t是否输出正确结果?n);printf(t1:是ttt2:否);printf(nt);i=0;scanf(%d,&i);if(i=1)printf(t);for(i=0;iNUM;i+)printf(%d,*(c1+i);printf(n);printf(t是否继续游戏?n);printf(t1:是ttt2:否);printf(nt);i=0;scanf(%d,&i);system(cls);if(i=1)Game_main();elseMenu_select();elseprintf(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=(p.data)Tiptop_register(S);/*/主函数/*void main()printf(n);printf(*n);printf(*n);pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论