大家好,我正在为tic tac toe和
我很难找到最好的办法
我先把我的两个'X'放在最好的位置,然后把我的对手'O'放在最好的位置
位置(即不给我获胜的机会)。
然后把我的“X”放在空白处,检查我的胜算。如果不能腾空继续。
但我发现很难检查我的胜算。
当我放入最后一个X时,check方法将chance变量增加1
但是,当我改变X位置以计数另一个机会时,函数预先计数(即chance在开始时产生的X
这是我的代码示例:

char a[3][3];
int check(void)
{
   char op='X';
   int e,w,p=0;
   int      i=0,j;
   for(w=0;w<3;w++)
   {
      for(e=0;e<3;e++)
      {
         if(a[w][e]=='_')
         {
            a[w][e]=op;
            pri();
            i=0;
            for(j=0;j<3;j++)
            {
               if(a[i][j]==op && a[i+1][j]==op && a[i+2][j]==op)
               {
                  chance++;   a[w][e]='_';
               }
            }
            j=0;
            for(i=0;i<3;i++)
            {
               if(a[i][j]==op && a[i][j+1]==op && a[i][j+2]==op)
               {
                  chance++;   a[w][e]='_'; r
               }
            }
            if(a[0][0]==op && a[1][1]==op && a[2][2]==op)
            {
               chance++;   a[w][e]='_';
            }
            else if(a[0][2]==op && a[1][1]==op && a[2][0]==op)
            {
               chance++;   a[w][e]='_';
            }
           a[w][e]='_';
        }
      }
   }
}

最佳答案

看起来chance是一个全局变量,因此即使在函数返回后它也会保持其值。您可以通过在函数开头添加chance = 0来重置其值。

08-05 22:58