正文

猜数字游戏(你想数字,电脑猜)2006-07-25 21:20:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/16826.html

分享到:

#include <iostream.h>

#include <string.h>

 

int s[24]={

    1234,1243,1324,1342,1432,1423,

    2134,2143,2314,2341,2431,2413,

    3214,3241,3124,3142,3412,3421,

    4231,4213,4321,4312,4132,4123};

 

int comp(int a,int b,int c,int d)

{

    char s[5];

    cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;

    cin>>s;

    return s[0]-‘0’+s[2]-‘0’;

}

 

int comp2(int a,int b,int c,int d)

{

    char s[5];

    cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;

    cin>>s;

    if(s[0]!=4)//顺序还没有完全对

    return 0;

    else

    return 1;

}

   

   

int main()

{

    int i,j;

    int guess[10];

    int num[10];

    int total=0;

    int mydate[4];

    int x1,x2,x3,x4,x5,x6;

 

    for(i=0;i<10;i++)

       num[i]=0;

    for(i=0;i<10;i++)

       guess[i]=i;

 

    x1=comp(guess[0],guess[1],guess[2],guess[3]);

    if(x1==0)

    {

       x6=comp(guess[0],guess[1],guess[2],guess[4]);

       if(x6!=0)

       {

           num[4]=1;

           total++;

       }

    }

    else if(x1==4)

    {

       num[0]=1;

       num[1]=1;

       num[2]=1;

       num[3]=1;

       total+=4;

       goto loop;

    }

    else

    {

       x2=comp(guess[4],guess[1],guess[2],guess[3]);

       x3=comp(guess[0],guess[4],guess[2],guess[3]);

       x4=comp(guess[0],guess[1],guess[4],guess[3]);

       x5=comp(guess[0],guess[1],guess[2],guess[4]);

       if(x2+x3+x4+x5>4*x1) 

       {

           num[4]=1;

           total+=1;

           if(x1==x2)

           {

              num[0]=1;

              total++;

           }

           if(x1==x3)

           {

              num[1]=1;

              total++;

           }

           if(x1==x4)

           {

              num[2]=1;

              total++;

           }

           if(x1==x5)

           {

              num[3]=1;

              total++;

           }

       }

       else

       {

           if(x1>x2)

           {

              num[0]=1;

              total++;

           }

           if(x1>x3)

           {

              num[1]=1;

              total++;

           }

           if(x1>x4)

           {

              num[2]=1;

              total++;

           }

           if(x1>x5)

           {

              num[3]=1;

              total++;

           }

       }

    }

 

    //0,1,2,3,4已经确定是否出现。

 

    x1=comp(guess[5],guess[6],guess[7],guess[8]);

    if(x1==0)

    {

       x6=comp(guess[5],guess[6],guess[7],guess[9]);

       if(x6!=0)

       {

           num[9]=1;

           total++;

       }

    }

    else if(x1==4)

    {

       num[5]=1;

       num[6]=1;

       num[7]=1;

       num[8]=1;

       total+=4;

       goto loop;

    }

    else

    {

       x2=comp(guess[9],guess[6],guess[7],guess[8]);

       x3=comp(guess[5],guess[9],guess[7],guess[8]);

       x4=comp(guess[5],guess[6],guess[9],guess[8]);

       x5=comp(guess[5],guess[6],guess[7],guess[9]);

       if(x2+x3+x4+x5>4*x1)

       {

           num[9]=1;

           total+=1;

           if(x1==x2)

           {

              num[5]=1;

              total++;

           }

           if(x1==x3)

           {

              num[6]=1;

              total++;

           }

           if(x1==x4)

           {

              num[7]=1;

              total++;

           }

           if(x1==x5)

           {

              num[8]=1;

              total++;

           }

       }

       else

       {

           if(x1>x2)

           {

              num[5]=1;

              total++;

           }

           if(x1>x3)

           {

              num[6]=1;

              total++;

           }

           if(x1>x4)

           {

              num[7]=1;

              total++;

           }

           if(x1>x5)

           {

              num[8]=1;

              total++;

           }

       }

    }

    loop:

    j=0;

    for(i=0;i<10;i++)

    if(num[i]==1)

    {

       mydate[j]=i;

       j++;

    }

       i=0;

       while(1)

       {

           x1=s[i]/1000-1;

           x2=s[i]/100%10-1;

           x3=s[i]/10%10-1;

           x4=s[i]%10-1;

           if(comp2(mydate[x1],mydate[x2],mydate[x3],mydate[x4])==1)

           {

              cout<<"I get it,it is:";

              cout<<mydate[x1]<<" "<<mydate[x2]<<" "

              <<mydate[x3]<<" "<<mydate[x4]<<endl;

              return 0;

           }

           i+=1;

       }

}

 

 

PS: 改了下程序,明天上机测试下.

说明:

首先你自己随便想4个数字,要求是4个数字的范围0-9且各不相同,但有顺序。要你猜这4个数字。电脑会猜你想的数字,对电脑每次猜的数字你要给一个评价.评价规则为:如果电脑猜的数字中一个数字和你给的数字相同且位置相同就得一个A,如果猜对了数字但位置不对就得一个B.电脑会一直猜直到猜中你想的数字.

最坏的情况电脑可能要猜36次,所以整天要你输入评价,还蛮麻烦的.所以测试这个程序并不简单..

 

 

相关文章:

猜数字游戏(解释)

http://blog.programfan.com/article.asp?id=16825

 

对置顶贴猜数字的一点解释.

http://blog.programfan.com/article.asp?id=16842

 

阅读(6378) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册