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);
}
私が述べたように、この奇妙な動作が発生する理由とその修正方法を知りたい.
どんな助けでも大歓迎です:)