C高级语言程序设计猜数字游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《高级语言程序设计》课程设计
说明书
设计题目:猜数字游戏
目录
1.游戏说明、、、、、、、、、、、、、、、、、、、、、、、、、、1
2.程序的模块组成、、、、、、、、、、、、、、、、、、、、2
3.程序流程、、、、、、、、、、、、、、、、、、、、、、、、、、2
4.程序源清单、、、、、、、、、、、、、、、、、、、、、、、、2
5.课程设计总结、、、、、、、、、、、、、、、、、、、、、、、19
课题:猜数字游戏
说明:每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜
基本功能:
1.用户注册
2.用户积分查看
游戏流程设计思路:
1
设计思路:
1.程序的模块组成:
主函数、、、、、、、、、、、、int mian
创立结构体、、、、、、、、struct record
定义数组、、、、、、、、、、char name[ ]
清除文本模式窗口、、system("cls")
2.程序流程:
分别用void定义开始界面display,操作函数sys(int a),记录文件recwrite(),浏览界面vdisplay(),读取文件recread() ,开始游戏newgame(),判断并增加记录addrec()。

在用int mian主函数调用。

srand( (unsigned)time( NULL ),以时间为种子,产生随机数,更具有代表性,这样避免了随机出显的数字服从正太分布。

3程序源清单:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h> 2
struct record
{
char name[10];
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(); //写入记录文件
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("请输入你所选择的操作数:\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()
{
system("cls");
printf("请输入你的名字\n");
scanf("%s",&); 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 system("cls"); //清屏
printf("
============================================\n"); printf(" ================数字竞猜游戏================\n");
printf(" ====================积分
====================\n");
recread();
printf("\n");
printf(" 姓名:%s : 分数%d\n",,rec.sorce); printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
void recread() //读取记录文件
{
FILE *fp; 8 L: fp=fopen("E:\\rec.rec","rb");
if(fp==NULL)
{
recwrite();
goto L; //初始化
}
if(fread(&rec,sizeof(record),1,fp)==1)
{
}
else
{
printf("文件读取失败!");
}
fclose(fp);
}
void newgame() //新游戏
{
recread();
system("cls"); //清屏9 printf("\n");
if (==0)
{ printf(" 请先注册用户\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();}
/////////////////////////////////////////////////////////////////////////////
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",,rec.sorce); printf("\n");
printf(" 按1: 终止游戏,显示
答案\n");
printf("
============================================\n"); printf("\n");
printf("请输入你猜想的五个数字(格式为99999样式)你还有%d 次机会:\n",sn);
scanf("%d",&snum);
if(snum<100000 && snum>10000 || snum==1)
{
if(snum==1)
{
printf("你放弃了本局游戏!该五个数字是: %d\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)
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("恭喜!你猜对了!五个数就是:%d\n",num);
return(0);
14 }
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;
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",af);
if(af==a)printf("恭喜!第一个数字对了!应该是: %d\n",af); //数字比较
if(af<a)printf("第一个数应该比%d 大一点!\n",af);
if(bf>b)printf("第二个数应该比%d 小一点!\n",bf);
if(bf==b)printf("恭喜!第二个数字对了!就是: %d\n",bf); //数字比较
if(bf<b)printf("第二个数应该比%d 大一点!\n",bf); 15
if(cf>c)printf("第三个数应该比%d 小一点!\n",cf);
if(cf==c)printf("恭喜!第三个数字对了!就是: %d\n",cf); //数字比较
if(cf<c)printf("第三个数应该比%d 大一点!\n",cf);
if(df>d)printf("第四个数应该比%d 小一点!\n",df);
if(df==d)printf("恭喜!第四个数字对了!就是: %d\n",df); //数字比较
if(df<d)printf("第四个数应该比%d 大一点!\n\n",df);
if(ef>e)printf("第五个数应该比%d 小一点!\n",ef);
if(ef==e)printf("恭喜!第五个数字对了!就是: %d\n",ef); //数字比较
if(ef<e)printf("第五个数应该比%d 大一点!\n\n",ef);
return(1);
}
}
16
void 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%100;
}
L: for(int j=0;j<i;j++)
{
a=a+rand(); //判断随机数是否是五位数如果不是继续取数
}
a=(a/i+rand())%100000;
if(a<10000)goto L;
return(a);
}
18 3.课程设计总结
这次的课程设计总算是告一段落,虽然源程序不是自己亲自全部完成,但是毕竟也花费了自己的很多精力,从开始的到网上查找资料,然后自己一点点的改正,调试,中间的好多问题自己都没有办法解决,也看不懂,也让自己知道光靠书本的那点知识是无法解决的,书本的知识毕竟是有限的。

好多知识都得自己去学,而不是等着老师教。

第一次完成这么大的一个完整的程序,让自
己意识到了自己的知识欠缺。

和以前课本上的许多知识没有学到
位。

有时候在电脑面前呆几个小时就是为了解决一个小问题,很是费时间和精力,更是让自己知道了基础知识的重要性,再复
杂的程序也是从基础开始的,所以打好基础是关键!
19。

相关文档
最新文档