#include<iostream>
#include<stdlib.h>#include<conio.h>
#include<time.h>
#include<ctype.h>
#include"windows.h"
void main()
{
using namespace std;
int a[4],b[4];
int i,j;
char chong='Y';
int d;
while(chong=='Y'||chong=='y')
{
//确保可以无数次游戏直到不选“Y”退出
system("cls");
cout<<"\t****************************猜数字游戏*****************************"<<endl;//可以让游戏中途退出
cout<<"\t\t************(输入-1中途退出)*************"<<endl;
cout<<"A代表数字位置都正确的个数 B代表数字正确但是位置不对"<<endl;
d=0;//d为控制游戏最终判断是否成功及使循环连续的开关
for(i=0;i<4;i++){
a[i]=10;
b[i]=10;//初始化AB数组
}
srand((unsigned)GetTickCount());
for(i=0;i<4;i++)
b[i]=rand()%10;//产生0-9的随机数
while(b[0]==b[1])
b[1]=rand()%10;//确保b[0]和b[1]的数不同
while(b[0]==b[2]||b[1]==b[2])
b[2]=rand()%10;//确保b[2]和b[0]、b[1]的数不同
while(b[0]==b[3]||b[1]==b[3]||b[2]==b[3])
b[3]=rand()%10;//确保b[3]和b[0]、b[1]、b[2]的数不同
int ca=0,cb;
for(j=10;j>0;j--){
//游戏只有10次机会
if(ca==4)
{
cout<<"恭喜你获胜了"<<endl;//当ca==4时全部猜对
cout<<"是否再来一局,(Y/N)"<<endl;
chong=getch();//Y/N输入以便继续
if(chong=='N'||chong=='n') exit(1);
if(chong=='Y'||chong=='y'){d=1;break;}
}//游戏胜利返回1
if(d!=0)
break;
ca=0;
cb=0;//初始化提示"AB"
cout<<"您有"<<j<<"次机会:请输入0-9的四个数输入时以空格隔开"<<endl;
for(i=0;i<4;i++)
{
cin>>a[i];//初始化输入四个数
if(a[i]==-1)
exit(1);
}
while(a[0]<0||a[0]>9)
{
cout<<"第一个数输入有误,请重新输入"<<endl;
cin>>a[0];//确保输入正确
}
while(a[1]<0||a[1]>9||a[0]==a[1])
{
cout<<"第二个数输入有误,请重新输入"<<endl;
cin>>a[1];//确保输入正确
}
while(a[2]<0||a[2]>9||a[0]==a[2]||a[1]==a[2])
{
cout<<"第三个数输入有误,请重新输入"<<endl;
cin>>a[2];//确保输入正确
}
while(a[3]<0||a[3]>9||a[0]==a[3]||a[1]==a[3]||a[2]==a[3])
{
cout<<"第四个数输入有误,请重新输入"<<endl;
cin>>a[3];//确保输入正确
}
for(i=0;i<4;i++)
if(a[i]==b[i]) ca++;//此循环判断位置和数字是否都正确
if(a[0]==b[1]||a[0]==b[2]||a[0]==b[3]) cb++;
if(a[1]==b[0]||a[1]==b[2]||a[1]==b[3]) cb++;
if(a[2]==b[0]||a[2]==b[1]||a[2]==b[3]) cb++;
if(a[3]==b[0]||a[3]==b[1]||a[3]==b[2]) cb++;
/*以上4个if判断数字正确但位置不对的数*/
for(i=0;i<4;i++)
cout<<a[i];
cout<<" ";
cout<<"A"<<ca<<"B"<<cb<<endl;
}
/*以上for循环进行提示每次猜的结果*/
if(d!=0)
continue;
cout<<"很遗憾你失败了"<<endl;//当10次都没猜对提示失败
cout<<"答案为:";
for(i=0;i<4;i++)
cout<<b[i];//输出正确的答案
cout<<endl;
cout<<"是否再来一局,(Y/N)";
cout<<endl;
chong=getch();
if(chong=='N'||chong=='n') exit(1);
if(chong=='Y'||chong=='y')
continue;
}
}