#include<cstdlib>
#include<ctime>
#include<string>
#include<iostream>
#include<conio.h>
using namespace std;
const int SECRET_SIZE=10; // size of secret number array
const int GUESS_SIZE=4; // size of guess number array
void initialize_secret( int secret[] )
{
int i;
srand((int)time(0));
for (i=0;i<SECRET_SIZE;i++)
{
secret[i]=(rand())%10;
}
}//use time as seeds
void read_guess( int guess[] )
{
string str;
char ch;int i=0;
cout<<"guess:"<<endl;
do{
ch=getch();
if(ch>='0'&&ch<='9')
{
putchar(ch);
putchar(' ');
str=str+ch;i++;
}//ignore other input
// if(ch==13) cout<<endl;
}while(i<4);
guess[0]=(int)str[0]-48;
guess[1]=(int)str[1]-48;
guess[2]=(int)str[2]-48;
guess[3]=(int)str[3]-48;
cout<<endl;
}
bool no_match(int secret[], int guess[] )
{
int i,j,cowCount=0,bullCount=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(secret[i]==guess[j])
{
if(i==j) bullCount++;else cowCount++;
break;//since the 4 number are different;
}
}//end for
}//end for
cout<<"bull:"<<bullCount<<" cow:"<<cowCount<<endl;
if (bullCount==4) return false;
else return true;
}
void display(int secret[])
{
int i;
for(i=0;i<4;i++)
cout<<secret[i]<<" ";
cout<<endl;
}
bool same(int secret[])
{
int i,j;
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
if(secret[i]==secret[j]) return true;
return false;
}
int main()
{
int secret[SECRET_SIZE];
int guess[GUESS_SIZE],guessTime=0;
do{
initialize_secret(secret);
}while(same(secret));//make sure the numbers are different
cout<<"Melcome to MOO!!!!!!"<<endl;
cout<<"***************************************************************\n"
"Moo is a guessing game imported from England.\n"
"The computer picks a number consisting of four distinct decimal digits.\n"
"YOU guess four distinct digits being scored on each guess.\n"
"A \"cow\" is a correct digit in an incorrect position. \n"
"A \"bull\" is a correct digit in a correct position.\n"
"The game continues until YOU guesses all the number.(a score of four bulls)\n"
"Input four 0 to show secret. :)\n"
"enioy it!!!!!! :)\n"
"***************************************************************\n"<<endl;
//description
do{
read_guess(guess);
guessTime++;
if (guess[0]==0&&guess[1]==0&&guess[2]==0&&guess[3]==0)
display(secret);
}while(no_match(secret,guess));
cout<<"YOU finally succeed!"<<endl;
cout<<"YOU have tried "<<guessTime<<" times!"<<endl;
cout<<"Welcome to replay this game!!!!!!"<<endl;
return 0;
}