gpt4 book ai didi

c - 井字棋 AI 选择了错误的位置

转载 作者:行者123 更新时间:2023-11-30 20:06:59 25 4
gpt4 key购买 nike

我正在制作井字游戏的 C 程序。我现在正在努力让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);
}

正如我所说,我想知道为什么会出现这种奇怪的行为以及如何解决它。

任何帮助将不胜感激:)

最佳答案

你在哪里计算出一名玩家直线获得了 3 分?您的代码中没有任何地方对此进行计算。您已经通过递归迭代了可能的棋盘位置,但没有考虑获胜条件。也许首先编写代码。

关于c - 井字棋 AI 选择了错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18416492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com