怎么使用C语言实现珠玑妙算Mastermind小游戏
代码
这里其实原理与代码十分简单,是通过几个条件进行的逻辑判定。
#include#include #include main() { int a,b,c,d,x,y,z,w,flag1=0,i=0,j=0,l=0,m=0; srand(time(NULL));//用机器时间设置随机种子 x=rand()%6+1;//生成6个随机数字 do {y=rand()%6+1;} while(y==x); do {z=rand()%6+1;} while(z==x || z==y); do {w=rand()%6+1;} while(w==z || w==x || w==y);//设置的6个随机数互不相同 while(flag1==0) { printf("请依次输入4个数字(1-6中),谢谢,这是第 %d 次尝试n-n ",m+1); scanf("%d %d %d %d",&a,&b,&c,&d); if(a==x) i++; if(b==y) i++; if(c==z) i++; if(d==w) i++; //确定正确位置个数 if(a!=x && (x==b || x==c || x==d)) j++; if(b!=y && (y==a || y==c || y==d)) j++; if(c!=z && (z==a || z==b || z==d)) j++; if(d!=w && (w==a || w==b || w==c)) j++; //确定错误位置、正确数值个数 printf("n正确位置及数值有 %d 个,正确数值错误位置有 %d 个n",i,j); if(i==4)//完全推出情况返回答案,反馈推理次数,跳出循环 { m++; printf("n恭喜你答对了,你用了 %d 次,答案是: %d %d %d %dn",m,x,y,z,w); flag1++; } m++;//次数加一 i=0; j=0;//判断正确位置个数及确定错误位置、正确数值个数清零 } }
运行尝试
