《c课程设计报告猜数字游戏》由会员分享,可在线阅读,更多相关《c课程设计报告猜数字游戏(18页珍藏版)》请在金锄头文库上搜索。
1、课程设计报告课程设计名称:C 语言猜数字游戏 目录一:设计目的 二:游戏规则及说明三:总体及函数设计(1)总体(2)主要流程图(3)文件及函数组成(4)函数描述四:源程序代码五:运行结果一:设计目的 加强对 C 语言的基础知识的牢固,复习 C 语言的一些基本算法的设计 通过对小型应用型 C 程序设计,了解程序设计的基本思路 通过趣味性程序的设计,增强对 C 语言学习的兴趣 通过编写程序发现 C 语言学习中存在的问题,以及找出解决问题的办法二:游戏规则以及说明游戏开始,系统随机产生一个数字不重复的 N 位数。您开始猜测数据填在正确位置按回车提交。系统会将您提交的数与它自动产生的数进行比较,结果显
2、示成*A*B形式。其中 A 代表数字正确相应位置也正确,B 代表数字正确但位置不正确。比如:2A2B 表示您有 2 个数字的位置正确且数值也正确,除此以外,您还猜对了 2 个数字,但位置不对,即您已经猜出所有数据,不过有两个数据位置对调了!您共有一定次数的猜测机会,在规定次数内之内完成,使结果为“4A0B”,则游戏成功。否则游戏失败。三:总体及函数设计(1)总体: 由多函数的形式实现程序的设计 (2)主要流程图:A主函数流程图:B开始游戏菜单的主要流程图:(3)文件及函数组成函数名或其他成分 功能Main 总控函数Menu_select 菜单选择Handle_menu 菜单处理Tiptop_r
3、egister 最高分记录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; /定
4、义结构体 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()
5、; /输出最佳排行函数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);
6、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,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 请输入相应序号,
7、选择相应的等级:t);loop:scanf(%d,getchar();/屏蔽回车if(D3)printf(t 设置输入有误!请重新输入:t);goto loop;if(fp=fopen(D.txt,w)=NULL)printf(打开 D.txt 文件失败 !);exit(1);fwrite(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:游戏开始,系统随机产生一个数字不重复的
8、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
9、);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);/*
10、/输出最佳排行函数/*void Tiptop_out()int i;FILE *fp;tiptop p,q,r;if(fp=fopen(tiptop1.txt,r)=NULL)printf(打开 tiptop1.txt 文件失败!);exit(1);fread(fclose(fp);if(fp=fopen(tiptop3.txt,r)=NULL)printf(打开 tiptop3.txt 文件失败!);exit(1);fread(fclose(fp);if(p.data=0&q.data=0&r.data=0)printf(t 暂无最高分信息!);printf(n);elseprintf(t
11、猜数字游戏的最佳排行榜如下:n);printf(nn);printf(t 等级t 姓名 t 分数t 游戏时间n);if(p.data!=0)printf(t%st%st%dt,p.grade,p.name,p.data);if(q.data!=0)printf(t%st%st%dt,q.grade,q.name,q.data);if(r.data!=0)printf(t%st%st%dt,r.grade,r.name,r.data);if(p.data=0)printf(n 初级暂无最高分信息!n);if(r.data=0)printf(n 高级暂无最高分信息!n);/*/记录最高分函数/*v
12、oid 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,n.name);/获取时间time(t=gmtime(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_ye
13、ar;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(fclose(fp);if(D=3)if(fp=fopen(tiptop3.txt,w)=NULL)printf(t 打开 tiptop3.txt 文件失败!);exit(1);fwrite(fclose(fp);/全局变量int *c1; /产生的数保存在指针 c 中int A,B;