c语言取数游戏,C语言编程题(设计一个猜数字的小游戏)满意再加200分!!!!

匿名用户

1级

2014-11-27 回答

我看了楼上几个的答案,功能均不是很完善,所以我决定来试一试

,应该是今天最迟是明天可以贴出来了.希望不要那么快就结贴....

哈哈.....经过了几个小时的奋战..终于搞出来了!!!!!!!!!!!!!!!!!!!你题目要求的功能几乎全部实现.希望你认真调试一下!!!!!!

调试环境.vc++6.0.支持中文编译的编译器都可以调试运行的.

注意事项:如果编译器是不支持中文显示的就会出现乱码的,所以最好是在支持中文显示的编译器上面编译运行.例如:vc++6.0以上的版本!!!!

#include

#include

#include

#include

#include

#defineMAX5

structrecord

{

charname[10];

intsorce;

}rec[MAX],Rec;

intn;//记录行数

intnum;//输入的数字

voiddisplay();//开始界面

voidxuanze();//选择函数

voidsys(inta);//操作函数

voidnewgame();//新游戏

voidvdisplay();//浏览记录界面

voidvxuanze();//浏览选择函数

voidhelp();//帮助说明

voidvsys(inta);//浏览操作函数

voidviewsorce();//按记录的顺序浏览

voidviewname();//按记录的姓名浏览

voidviewsname();//按记录和姓名浏览

voiddelrec();//删除记录

intqushu();//取数函数

inttishi(intaa);//提示函数

voidaddrec(inta);//判断并且增加记录

voidrecread();//读取记录文件

voidrecwrite();//写入记录文件

///

函数定义//

voiddisplay()//开始界面

{

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");

printf("4:清除记录\n");

printf("\n");

printf("5:退出\n");

printf("\n");

printf("============================================\n");

xuanze();

}

voidxuanze()//选择函数

{

inta;

printf("请输入你所选择的操作数:\n");

scanf("%d",&a);

if(a==1||a==2||a==3||a==4||a==5)

{

sys(a);

}//选择相应的操作数执行函数

else

{

printf("错误的操作数!\n");;

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

}

voidsys(inta)//操作函数

{

switch(a)

{

case1:newgame();break;

case2:vdisplay();break;

case3:help();break;

case4:delrec();break;

case5:exit(0);break;//退出

}

}

voidnewgame()//新游戏

{

recread();

system("cls");//清屏

printf("\n");

printf("记录列表显示如下:\n");

printf("\n");

for(inti=0;i

{

if(rec[i].sorce==0)printf("\n");

else

printf("第%d名:姓名:%s分数%d\n",i+1,rec[i].name,rec[i].sorce);

}

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();//上面列出记录文件中的记录

/

intsnum;//输入的数字

intsn=10;//机会次数

num=qushu();//取数

L:system("cls");//清屏

printf("============================================\n");

printf("================数字竞猜游戏================\n");

printf("============================================\n");

printf("\n");

printf("1:显示答案\n");

printf("============================================\n");

printf("\n");

printf("请输入你猜想的四个数字(格式为9999样式)你还有%d次机会:\n",sn);

scanf("%d",&snum);

if(snum<10000&&snum>1000||snum==1)

{

if(snum==1)

{

printf("你放弃了本局游戏!该四个数字是:%d\n",num);

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

else

{

intflag=tishi(snum);

if(flag!=0&&sn!=0)

{

sn--;

if(sn==0)

{

printf("真是遗憾!十次机会没有了!没有关系!下次继续!\n");

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

printf("请按任意键继续猜...\n");

getchar();

getchar();

gotoL;

}

else

{

if(sn!=0)addrec(sn);

else

{

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

}

}

}

else

{

printf("错误的操作数!\n");;

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

gotoL;

}

}

voidhelp()//帮助说明

{

system("cls");//清屏

printf("============================================\n");

printf("==============数字竞猜游戏帮助==============\n");

printf("============================================\n");

printf("\n");

printf("1.新游戏中,你可以输入四位数,来竞猜系统自动生成的四个数字!,只有十次的机会,\n");

printf("每次机会都有相对应的提示,十次的机会利用完了还没有猜对的话就算失败!四个数字的\n");

printf("相应格式在游戏中会有提示!当成功猜出系统给定的数字时候,就会统计你的成绩.当你的\n");

printf("成绩比记录文件中的记录好的时候就会提示你是否把记录记录到记录文件中,当你选择是\n");

printf("的时候就会接着提示你输入你的名字.再按回车.没有意外就会提示保存成功!\n");

printf("还有要说明的是记录中的分数是越低就代表成绩越好!\n");

printf("2.浏览记录有三种方式!第一种只是列出记录中的姓名;第二种是列出记录中的成绩次序\n");

printf("第三种是姓名跟成绩一起列出来!\n");

printf("3.清除记录就是把记录文件初始化.即是让记录文件为空!\n");

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

voidvdisplay()//浏览记录界面

{

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");

printf("4:返回上级\n");

printf("\n");

printf("============================================\n");

vxuanze();

}

voidvxuanze()//浏览选择函数

{

inta;

printf("请输入你所选择的操作数:\n");

scanf("%d",&a);

if(a==1||a==2||a==3||a==4)

{

vsys(a);

}//选择相应的操作数执行函数

else

{

printf("错误的操作数!\n");;

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

vdisplay();

}

}

voidvsys(inta)//浏览操作函数

{

switch(a)

{

case1:viewsorce();break;

case2:viewname();break;

case3:viewsname();break;

case4:display();break;//返回上级

}

}

voidviewname()//按记录的顺序浏览

{

recread();

system("cls");//清屏

printf("\n");

printf("记录列表显示如下:\n");

printf("\n");

for(inti=0;i

{

if(rec[i].sorce==0)printf("\n");

else

printf("第%d名:姓名:%s\n",i+1,rec[i].name);

}

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

vdisplay();

}

voidviewsorce()//按记录的姓名浏览

{

recread();

system("cls");//清屏

printf("\n");

printf("记录列表显示如下:\n");

printf("\n");

for(inti=0;i

{

if(rec[i].sorce==0)printf("\n");

else

printf("第%d名:分数%d\n",i+1,rec[i].sorce);

}

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

vdisplay();

}

voidviewsname()//按姓名和记录浏览

{

recread();

system("cls");//清屏

printf("\n");

printf("记录列表显示如下:\n");

printf("\n");

for(inti=0;i

{

if(rec[i].sorce==0)printf("\n");

else

printf("第%d名:姓名:%s分数%d\n",i+1,rec[i].name,rec[i].sorce);

}

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

vdisplay();

}

voiddelrec()//删除记录

{

recread();

for(inti=0;i

{

rec[i].sorce=0;

}

recwrite();

printf("删除成功!\n");

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

intqushu()//取数函数

{

inta=0;

inti=0;

srand((unsigned)time(NULL));//随机数种子设置

while(i==0)

{

i=rand();//这样做就是为了增加随机性

i=i%100;

}

L:for(intj=0;j

{

a=a+rand();//判断随机数是否是四位数如果不是继续取数

}

a=(a/i+rand())%10000;

if(a<1000)gotoL;

return(a);

}

inttishi(intaa)//提示函数

{

inta,b,c,d;

intaf,bf,cf,df;

if(aa==num)

{

printf("恭喜!你猜对了!四个数就是:%d\n",num);

return(0);

}

else

{

a=(num-num%1000)/1000;

b=(num%1000-(num%1000)%100)/100;

c=((num%1000)%100-((num%1000)%100)%10)/10;//获取默认四个数字

d=((num%1000)%100)%10;

af=(aa-aa%1000)/1000;

bf=(aa%1000-(aa%1000)%100)/100;

cf=((aa%1000)%100-((aa%1000)%100)%10)/10;//获取输入的四个数字

df=((aa%1000)%100)%10;

if(af>a)printf("\n第一个数应该比%d小一点!\n",af);

if(af==a)printf("恭喜!第一个数字对了!应该是:%d\n",af);//数字比较

if(af

if(bf>b)printf("第二个数应该比%d小一点!\n",bf);

if(bf==b)printf("恭喜!第二个数字对了!就是:%d\n",bf);//数字比较

if(bf

if(cf>c)printf("第三个数应该比%d小一点!\n",cf);

if(cf==c)printf("恭喜!第三个数字对了!就是:%d\n",cf);//数字比较

if(cf

if(df>d)printf("第四个数应该比%d小一点!\n",df);

if(df==d)printf("恭喜!第四个数字对了!就是:%d\n",df);//数字比较

if(df

return(1);

}

}

voidaddrec(inta)//判断并且增加记录

{

charc;

intflag=0;//标志位

a=11-a;

recread();

for(inti=0;i

{

if(a

{

if(i==4||rec[i].sorce==0)

{

printf("\n");

printf("恭喜!你的成绩%d分已经达到了前五名!\n",a);

printf("确认要保存记录请按'y',任意键返回...!\n");

scanf("%s",&c);

if(c!='y')display();

rec[i+1].sorce=rec[i].sorce;//记录后移

strcpy(rec[i+1].name,rec[i].name);

printf("请输入你的名字\n");

scanf("%s",&rec[i].name);

rec[i].sorce=a;

recwrite();//写入

printf("恭喜!添加成功!\n",a);

flag++;

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

else

{

printf("\n");

printf("恭喜!你的成绩%d分已经达到了前五名!\n",a);

printf("确认要保存记录请按'y',任意键返回...!\n");

scanf("%s",&c);

if(c!='y')display();

for(intj=i;j

{

rec[j+1].sorce=rec[j].sorce;//记录后移

strcpy(rec[j+1].name,rec[j].name);

if(rec[j+2].sorce==0)break;

}

printf("\n");

printf("请输入你的名字\n");

scanf("%s",&rec[i].name);

rec[i].sorce=a;

recwrite();//写入

printf("恭喜!添加成功!\n",a);

flag++;

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

}

}

if(flag==0)

{

printf("\n");

printf("请按任意键继续...\n");

getchar();

getchar();

display();

}

}

voidrecread()//读取记录文件

{

FILE*fp;

L:fp=fopen("E:\\rec.rec","rb");

if(fp==NULL)

{

recwrite();

gotoL;//初始化

}

if(fread(&rec,sizeof(record),MAX,fp)==MAX)

{

}

else

{

printf("文件读取失败!");

}

fclose(fp);

}

voidrecwrite()//写入记录文件

{

FILE*fp;

fp=fopen("E:\\rec.rec","wb");

if(fp==NULL)

printf("写入失败!\n");

fwrite(rec,sizeof(record),MAX,fp);

fclose(fp);

}

voidmain()

{

display();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值