1、C高级语言程序设计猜数字游戏高级语言程序设计课程设计说明书 设计题目:猜数字游戏 目录1. 游戏说明、12. 程序的模块组成、23. 程序流程、24. 程序源清单、25.课程设计总结、19课题:猜数字游戏说明:每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜 基本功能: 1.用户注册 2.用户积分查看 游戏流程设计思路: .新游戏退出游戏用户积分查看注册用户进入游戏1 给出提示与真确答案比较输入数字开始游戏 继续或退出游戏答案真确 1答案错误设计思路:1. 程序的模块组成:主函数、int mian创立结构体、st
2、ruct record 定义数组、char name 清除文本模式窗口、system(cls)2. 程序流程:分别用void定义开始界面display,操作函数sys(int a),记录文件recwrite(),浏览界面vdisplay(),读取文件recread() ,开始游戏newgame(),判断并增加记录addrec()。在用int mian主函数调用。 srand( (unsigned)time( NULL ),以时间为种子,产生随机数,更具有代表性,这样避免了随机出显的数字服从正太分布。3程序源清单:#include #include #include #include#inclu
3、de 2struct record char name10; int sorce;rec;int num; /输入的数字void display(); /开始界面void xuanze(); /选择函数void sys(int a); /操作函数void zhuce(); /用户注册void newgame(); /新游戏void vdisplay(); /浏览记录界面 int qushu(); /取数函数int tishi(int aa); /提示函数void addrec(); /判断并且增加记录void recread(); /读取记录文件void recwrite(); /写入记录文件
4、void main() 3 display();void display() /开始界面 system(cls); /清屏 printf( =n); printf( =数字竞猜游戏=n); printf( =n); printf(n); printf( 1: 新游戏n); printf(n); printf( 2: 注册用户n); printf(n); printf( 3: 用户积分查看n); printf(n); 4 printf( 4: 退出n); printf(n); printf( =n); xuanze();void xuanze() /选择函数 int a; printf(请输入你
5、所选择的操作数:n); scanf(%d,&a); if(a=1|a=2|a=3|a=4) sys(a); /选择相应的操作数执行函数 else printf(错误的操作数!n); printf(n); printf(请按任意键继续.n); getchar(); 5 getchar(); display(); void sys(int a) /操作函数 switch(a) case 1:newgame();break; case 2:zhuce();break; case 3:vdisplay();break; case 4:exit(0);break; /退出 void zhuce() sy
6、stem(cls); printf(请输入你的名字n); scanf(%s,&rec.name); 6 recwrite(); /写入 printf(恭喜!注册成功!n); printf(请按任意键继续.n); getchar(); getchar(); display();void recwrite() /写入记录文件 FILE *fp; fp=fopen(E:rec.rec,wb); if(fp=NULL) printf(写入失败!n); fwrite(&rec,sizeof(struct record),1,fp); fclose(fp);void vdisplay() /浏览记录界面
7、7 system(cls); /清屏 printf( =n); printf( =数字竞猜游戏=n); printf( =积分=n); recread(); printf(n); printf( 姓名: %s : 分数 %dn,rec.name,rec.sorce); printf(n); printf(请按任意键继续.n); getchar(); getchar(); display();void recread() /读取记录文件 FILE *fp; 8L: fp=fopen(E:rec.rec,rb); if(fp=NULL) recwrite(); goto L; /初始化 if(fr
8、ead(&rec,sizeof(record),1,fp)=1) else printf(文件读取失败!); fclose(fp);void newgame() /新游戏 recread(); system(cls); /清屏 9 printf(n); if (rec.name=0) printf( 请先注册用户n); printf(请按任意键继续.n); getchar(); getchar(); vdisplay(); / int snum; /输入的数字 int sn=10; /机会次数 num=qushu(); /取数L: system(cls); /清屏 printf( =n); p
9、rintf( =n); printf( =数字竞猜游戏=n); printf( =n); printf(n); printf( =n); printf( 姓名: %s : 分数 %dn,rec.name,rec.sorce); printf(n); printf( 按 1: 终止游戏,显示答案n); printf( =n); printf(n); printf(请输入你猜想的五个数字(格式为99999样式)你还有 %d 次机会:n,sn); scanf(%d,&snum); if(snum10000 | snum=1) if(snum=1) printf(你放弃了本局游戏!该五个数字是: %d
10、n,num); 11 printf(n); printf(请按任意键继续.n); getchar(); getchar(); display() ; else int flag=tishi(snum); if(flag!=0 & sn!=0) sn-; if(sn=0) printf(真是遗憾!十次机会没有了!没有关系!下次继续!n); printf(n); printf(请按任意键继续.n); getchar(); getchar(); newgame() ; 12 printf(请按任意键继续猜.n); getchar(); getchar(); goto L; else if(sn!=0
11、) addrec(); else printf(请按任意键继续.n); getchar(); getchar(); newgame(); else 13 printf(错误的操作数!n); printf(n); printf(请按任意键继续.n); getchar(); getchar(); goto L; int tishi(int aa) /提示函数 int a,b,c,d,e; int af,bf,cf,df,ef; if(aa=num) printf(恭喜!你猜对了!五个数就是:%dn,num); return(0);14 else a=num/10000; b=num/1000%10
12、; c=num/100%100%10; /获取输入的四个数字 d=num/10%1000%100%10; e=num%10000%1000%100%10; af=aa/10000; bf=aa/1000%10; cf=aa/100%100%10; /获取输入的四个数字 df=aa/10%1000%100%10; ef=aa%10000%1000%100%10; if(afa)printf(n第一个数应该比 %d 小一点!n,af); if(af=a)printf(恭喜!第一个数字对了!应该是: %dn,af); /数字比较 if(afb)printf(第二个数应该比 %d 小一点!n,bf);
13、 if(bf=b)printf(恭喜!第二个数字对了!就是: %dn,bf); /数字比较 if(bfc)printf(第三个数应该比 %d 小一点!n,cf); if(cf=c)printf(恭喜!第三个数字对了!就是: %dn,cf); /数字比较 if(cfd)printf(第四个数应该比 %d 小一点!n,df); if(df=d)printf(恭喜!第四个数字对了!就是: %dn,df); /数字比较 if(dfe)printf(第五个数应该比 %d 小一点!n,ef); if(ef=e)printf(恭喜!第五个数字对了!就是: %dn,ef); /数字比较 if(efe)prin
14、tf(第五个数应该比 %d 大一点!nn,ef); return(1); 16void addrec() /判断并且增加记录 int a; /标志位 a=100; recread(); rec.sorce= rec.sorce+a; recwrite(); printf(请按任意键继续.n); getchar(); getchar(); newgame();int qushu( ) /取数函数 int a=0; int i=0;17 srand( (unsigned)time( NULL ) ); /随机数种子设置 while(i=0) i=rand(); /这样做就是为了增加随机性 i=i%
15、100; L: for(int j=0;ji;j+) a=a+rand(); /判断随机数是否是五位数 如果不是继续取数 a=(a/i+rand()%100000; if(a10000)goto L; return(a); 183. 课程设计总结 这次的课程设计总算是告一段落,虽然源程序不是自己亲自全部完成,但是毕竟也花费了自己的很多精力,从开始的到网上查找资料,然后自己一点点的改正,调试,中间的好多问题自己都没有办法解决,也看不懂,也让自己知道光靠书本的那点知识是无法解决的,书本的知识毕竟是有限的。好多知识都得自己去学,而不是等着老师教。第一次完成这么大的一个完整的程序,让自己意识到了自己的知识欠缺。和以前课本上的许多知识没有学到位。有时候在电脑面前呆几个小时就是为了解决一个小问题,很是费时间和精力,更是让自己知道了基础知识的重要性,再复杂的程序也是从基础开始的,所以打好基础是关键! 19
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1