-2

Tic-Tac-ToeのCプログラムを作っています。現時点では AI を無敵にしようとしていますが、問題が発生しました。問題は、AI が次の利用可能な質問に記号を出力するだけであることです。なんで?どうすれば修正できますか?

これが私の呼び出し関数です:

void determinMove(char positions[])
{
      int num, i, currentBestScore, score;

      currentBestScore = -100;

      for(i = 0; i < 9; i++)                       
      {
                 if(positions[i] == ' ')           
                 {                          
                         score = getFutureScoreOfMove(positions, 'C');
                         if(score > currentBestScore)       
                         {
                                num = i;
                                currentBestScore = score;
                          }
                          positions[i] = ' ';     
                 }      
      }
       positions[num] = comp;
}

そして、他の再帰関数:

int getFutureScoreOfMove(char positions[], char turn)    
{
       int i, currentBestScore, score;

       if(turn == 'C')                       currentBestScore = -100;       
       else                                     currentBestScore = 100;        

       for(i=0; i<9; i++)
       {
                if(positions[i] == ' ')
                {
                       if(turn == 'C')      
                       {
                           positions[i] = 'X';
                           score = getFutureScoreOfMove(positions, 'U'); 
                           positions[i] = ' ';
                       }
                       else
                       {
                            positions[i] = 'O';
                            score = getFutureScoreOfMove(positions, 'C');
                            positions[i] = ' ';
                       }
                       if(turn == 'C' && score > currentBestScore)                                    
                      currentBestScore = score;
                       if(turn == 'U' && score < currentBestScore)   
                      currentBestScore = score;
                 }       
         }   
         return(currentBestScore);                    
}

私が述べたように、この奇妙な動作が発生する理由とその修正方法を知りたい.

どんな助けでも大歓迎です:)

4

1 に答える 1

3

1 人のプレイヤーが 3 連勝したとはどこで計算しているのですか? コードのどこにもこれが計算されていません。再帰を使用して可能なボード位置を繰り返しましたが、勝利条件を考慮していません。多分それを最初にコーディングします。

于 2013-08-24T08:59:02.690 に答える