说明书
设计题目:猜数字游戏
目录
1. 游戏说明、、、、、、、、、、、、、、、、、、、、、、、、、、1 2. 程序的模块组成、、、、、、、、、、、、、、、、、、、、2 3. 程序流程、、、、、、、、、、、、、、、、、、、、、、、、、、2 4. 程序源清单、、、、、、、、、、、、、、、、、、、、、、、、2 5.课程设计总结、、、、、、、、、、、、、、、、、、、、、、、19
课题:猜数字游戏
说明:每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜 基本功能: 1.用户注册 2.用户积分查看
游戏流程设计思路: 答案真确 开始游戏
进入游戏1
答案错误 继续提示 10次后退出游戏 设计思路:
1. 程序的模块组成:
主函数、、、、、、、、、、、、int mian 创立结构体、、、、、、、、struct record 定义数组、、、、、、、、、、char name[ ] 清除文本模式窗口、、system(\"cls\")
.新游戏注册用户 用户积分查看 退出游戏 输入数字 与真确答案比较 给出提示 继续或退出游戏
1
2. 程序流程:
分别用void定义开始界面display,操作函数sys(int a),记录文件recwrite(),浏览界面vdisplay(),读取文件recread() ,开始游戏newgame(),判断并增加记录addrec()。在用int mian主函数调用。
srand( (unsigned)time( NULL ),以时间为种子,产生随机数,更具有代表性,这样避免了随机出显的数字服从正太分布。 3程序源清单: #include struct record { char name[10]; int sorce; }rec; 2 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(); void main() { display(); } void display() { system(\"cls\"); //用户注册 //新游戏 //浏览记录界面 //取数函数 //提示函数 //判断并且增加记录 //读取记录文件 //写入记录文件 //开始界面 //清屏 3 printf(\" ============================================\\n\"); printf(\" ================数字竞猜游戏================\\n\"); printf(\" ============================================\\n\"); printf(\"\\n\"); printf(\" 1: 新游戏\\n\"); printf(\"\\n\"); printf(\" 2: 注册用户\\n\"); printf(\"\\n\"); printf(\" 3: 用户积分查看\\n\"); printf(\"\\n\"); printf(\" 4: 退出\\n\"); printf(\"\\n\"); printf(\" ============================================\\n\"); xuanze(); } 4 void xuanze() //选择函数 { int a; printf(\"请输入你所选择的操作数:\\n\"); scanf(\"%d\ if(a==1||a==2||a==3||a==4) { sys(a); }//选择相应的操作数执行函数 else { printf(\"错误的操作数!\\n\");; printf(\"\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display(); } } void sys(int a) //操作函数 { 5 switch(a) { case 1:newgame();break; case 2:zhuce();break; case 3:vdisplay();break; case 4:exit(0);break; //退出 } } void zhuce() { system(\"cls\"); printf(\"请输入你的名字\\n\"); scanf(\"%s\ recwrite(); printf(\"恭喜!注册成功!\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display(); } //写入6 void recwrite() //写入记录文件 { FILE *fp; fp=fopen(\"E:\\\\rec.rec\ if(fp==NULL) printf(\"写入失败!\\n\"); fwrite(&rec,sizeof(struct record),1,fp); fclose(fp); } void vdisplay() //浏览记录界面 system(\"cls\"); //清屏 printf(\" ============================================\\n\"); printf(\" ================数字竞猜游戏================\\n\"); printf(\" ====================积分 { 7 ====================\\n\"); recread(); printf(\"\\n\"); printf(\" 姓名: %s : 分数 %d\\n\ printf(\"\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display(); } void recread() //读取记录文件 { FILE *fp; L: fp=fopen(\"E:\\\\rec.rec\ if(fp==NULL) { recwrite(); goto L; //初始化 } if(fread(&rec,sizeof(record),1,fp)==1) 8 { } else { printf(\"文件读取失败!\"); } fclose(fp); } void newgame() //新游戏 { recread(); system(\"cls\"); //清屏 printf(\"\\n\"); if (rec.name==0) { printf(\" 请先注册用户\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); vdisplay();} 9 ///////////////////////////////////////////////////////////////////////////// int snum; //输入的数字 int sn=10; //机会次数 num=qushu(); //取数 L: system(\"cls\"); //清屏 printf(\" ============================================\\n\"); printf(\" ============================================\\n\"); printf(\" ================数字竞猜游戏================\\n\"); printf(\" ============================================\\n\"); printf(\"\\n\"); printf(\" ===========================================\\n\"); printf(\" 姓名: %s : 分数 %d\\n\ printf(\"\\n\"); printf(\" 按 1: 终止游戏,显示 答案\\n\"); printf(\" ============================================\\n\"); printf(\"\\n\"); printf(\"请输入你猜想的五个数字(格式为99999样式)你还有 %d 次机会:\\n\ scanf(\"%d\ if(snum<100000 && snum>10000 || snum==1) { if(snum==1) { printf(\"你放弃了本局游戏!该五个数字是: %d\\n\ printf(\"\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); display() ; } else 11 { int flag=tishi(snum); if(flag!=0 && sn!=0) { sn--; if(sn==0) { printf(\"真是遗憾!十次机会没有了!没有关系!下次继续!\\n\"); printf(\"\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); newgame() ; } printf(\"请按任意键继续猜...\\n\"); getchar(); getchar(); goto L; } else 12 { if(sn!=0) addrec(); else { printf(\"请按任意键继续...\\n\"); getchar(); getchar(); newgame(); } } } } else { printf(\"错误的操作数!\\n\");; printf(\"\\n\"); printf(\"请按任意键继续...\\n\"); getchar(); getchar(); goto L; } 13 } int tishi(int aa) //提示函数 { int a,b,c,d,e; int af,bf,cf,df,ef; if(aa==num) { printf(\"恭喜!你猜对了!五个数就是:%d\\n\ return(0); } else { a=num/10000; b=num/1000%10; c=num/100%100%10; //获取输入的四个数字 d=num/10%1000%100%10; e=num%10000%1000%100%10; 14 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(af>a)printf(\"\\n第一个数应该比 %d 小一点!\\n\ if(af==a)printf(\"恭喜!第一个数字对了!应该是: %d\\n\数字比较