用C++设计一个猜数字游戏,要求由玩家输入的数字位数,电脑产生相同位数的数字,使用srand((unsigned)time(

2024-12-04 05:24:23
推荐回答(2个)
回答(1):

#include
#include /*必须包含该库,因为使用了srand和rand函数*/
#include /*必须包含该库,因为使用了time函数*/
void main()
{ kaishi: int n; void game(); printf("\n"); printf(" ************************************\n"); printf(" 欢迎进入猜数字游戏!\n"); printf("\n"); printf(" 1.开始游戏\n"); printf(" 2.退出游戏\n"); printf(" ************************************\n"); if(scanf("%d",&n)&&n==1) game(); else if(n==2) { printf(" ************************************\n"); printf(" 游戏结束!祝您愉快!\n"); printf("\n"); printf(" 再见!\n"); printf("\n"); printf(" ************************************\n"); } goto kaishi;} void game(){ int a; int rnd(void); void nd1(); void nd2(); void nd3(); void nd4(); printf(" 游戏规则:根据提示进行猜数字,直到猜中全部数字为止。\n\n"); printf(" 注意:每个数字都是独立的。即:数字的顺序也必须猜对才算猜中。\n\n"); printf(" 游戏难度分为:1、2、3、4\n\n"); printf(" 请选择游戏的难度\n\n"); scanf("%d",&a); if(a==1) nd1(); else if(a==2) nd2(); else if(a==3) nd3(); else if(a==4) nd4();} int rnd(void){ return rand() * 10 / RAND_MAX; /*返回一个100以内的随机数*/} void nd1(){ int A,x,z; srand(time(0));/*用当前时间生成随机数种子*/ A=rnd(); printf("请输入一个数字\n"); scanf("%d",&x); for(z=1;1;z++) { if((x>=0)&&(x<=9)) { if(A!=x) printf("不行啊,没猜中呢~\n"); else break; } else printf("输入有误哦~~ 是一个数字哦\n"); scanf("%d",&x); } printf("\n"); if(z<=3) printf(" 还不错哦~ %d次就猜中了~~",z); else if(z<=5) printf(" 一般般呢,猜了%d次呢",z); else printf(" 还没睡醒么??? 一个数字都猜了%d次 ",z); printf("\n\n\n");} void nd2(){ int A,B,a,b,x,i=0,z; srand(time(0));/*用当前时间生成随机数种子*/ A=rnd(); B=rnd(); printf("请输入两个数字\n"); scanf("%d",&x); a=x/10; b=x%10/1; for(z=1;1;z++) { if((x>=10)&&(x<=99)) { if(A==a) i++; if(B==b) i++; if(i==0) { printf("不行啊,继续努力~\n"); i=0; } else if(i==1) { printf("对了一个,加油!\n"); i=0; } else if(i==2) break; } else printf("输入有误哦~~ 是两个数字哦\n"); scanf("%d",&x); a=x/10; b=x%10/1; } printf("\n"); if(z==1) printf(" ( ⊙o⊙ )哇 1次性猜中~~"); else if(z<=8) printf(" 不错,不错。%d次猜中。",z); else if(z<=13) printf(" 一般般啦 猜了%d次呢。",z); else if(z<=20) printf(" 猜了%d次 你确定你睡醒了? ",z); else printf(" -_-||| 不会吧? 一个个试都不要%d次诶 ",z); printf("\n\n\n");} void nd3(){ int A,B,C,a,b,c,x,i=0,z; srand(time(0));/*用当前时间生成随机数种子*/ A=rnd(); B=rnd(); C=rnd(); printf("请输入三个数字\n"); scanf("%d",&x); a=x/100; b=x%100/10; c=x%10/1; for(z=1;1;z++) { if((x>=100)&&(x<=999)) { if(A==a) i++; if(B==b) i++; if(C==c) i++; if(i==0) { printf("相差太远啦!三个数字没有一个一样呢~\n"); i=0; } else if(i==1) { printf("不行哦~ 才一个数字一样呢~\n"); i=0; } else if(i==2) { printf("加油啊! 有两个数字一样了呢~\n"); i=0; } else if(i==3) break; } else printf("输入有误哦~~ 是三个数字哦\n"); scanf("%d",&x); a=x/100; b=x%100/10; c=x%10/1; } printf("\n"); if(z==1) printf(" 牛B 1次性猜中~~"); else if(z<=15) printf(" 不错,不错。%d次就猜中。",z); else if(z<=21) printf(" 一般般啦 猜了%d次呢。",z); else if(z<=30) printf(" 猜了%d次 要不咱先回家睡睡? ",z); else printf(" -_-||| 不会吧? 一个个试都不要%d次诶 ",z); printf("\n\n\n");} void nd4(){ int A,B,C,D,a,b,c,d,x,i=0,z; srand(time(0));/*用当前时间生成随机数种子*/ A=rnd(); B=rnd(); C=rnd(); D=rnd(); printf("请输入四个数字\n"); scanf("%d",&x); a=x/1000; b=x%1000/100; c=x%100/10; d=x%10/1; for(z=1;1;z++) { if((x>=1000)&&(x<=9999)) { if(A==a) i++; if(B==b) i++; if(C==c) i++; if(D==d) i++; if(i==0) { printf("相差太远啦!四个数字没有一个一样呢~\n"); i=0; } else if(i==1) { printf("不行哦~ 才一个数字一样呢~\n"); i=0; } else if(i==2) { printf("还不错 有两个数字一样了呢~\n"); i=0; } else if(i==3) { printf("加油啊!只差一个啦!\n"); i=0; } else if(i==4) break; } else printf("输入有误哦~~ 是四个数字哦\n"); scanf("%d",&x); a=x/1000; b=x%1000/100; c=x%100/10; d=x%10/1; } printf("\n"); if(z==1) printf(" 神人啊~~ 1次性猜中~~"); else if(z<=10) printf(" %d次就猜中。成绩相当不错哦~ O(∩_∩)O~",z); else if(z<=16) printf(" 猜了%d次呢。 也算不错哦",z); else if(z<=24) printf(" 猜了%d次 还可以更好哦",z); else if(z<=32) printf(" 猜了%d次 得努力加油呢",z); else if(z<=40) printf(" 猜了%d次 很一般的成绩啊 ",z); else printf(" -_-||| 不会吧? 一个个试都不要%d次诶 ",z); printf("\n\n\n");}
自己写的,曾经花了好几个晚上,就是为了让它人性化一点
游戏开始时可以设定难度,难度几就代表猜几个数字
百度知道貌似有问题啊,打上来就全粘一起了,你自己把它“分开”一下罗 (*^__^*) 嘻嘻……
望采纳

回答(2):

河工的吧