gpt4 book ai didi

c - 井字游戏玩家 vs 人工智能——人工智能问题

转载 作者:行者123 更新时间:2023-12-02 00:55:52 30 4
gpt4 key购买 nike

这是 C 语言中的玩家与 AI 井字棋游戏。如果 AI 滚到一个被占用的位置,我该如何让它再次滚到一个未被占用的位置?

char boardchar[3][3] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'} }; 


void Turn()
{
/*Player's Turn*/

AIrandomizer();
AI = AI_roll();


if (AI == 1 && boardchar[0][0] == '1')
{
boardchar[0][0] = symbAI;
}

else if (AI == 2 && boardchar[0][1] == '2')
{
boardchar[0][1] = symbAI;
}


else if (AI == 3 && boardchar[0][2] == '3')
{
boardchar[0][2] = symbAI;
}


else if (AI == 4 && boardchar[1][0] == '4')
{
boardchar[1][0] = symbAI;
}

else if (AI == 5 && boardchar[1][1] == '5')
{
boardchar[1][1] = symbAI;
}


else if (AI == 6 && boardchar[1][2] == '6')
{
boardchar[1][2] = symbAI;
}

else if (AI == 7 && boardchar[2][0] == '7')
{
boardchar[2][0] = symbAI;
}

else if (AI == 8 && boardchar[2][1] == '8')
{
boardchar[2][1] = symbAI;
}

else if (AI == 9 && boardchar[2][2] == '9')
{
boardchar[2][2] = symbAI;
}

}

我已经尝试过 switch(case) 和多个 ifs 和 else ifs,但我仍然无法找到解决这个问题的方法。

最佳答案

您可以使用 while 或 do-while 语句。

还要制作一个 3x3 二维数组来跟踪这些点:0 = 未填充,1 = 人类,2 = AI(最好使用枚举)。

在伪代码中:

全局变量:

int spots[3][3]; // 3x3 array

代码:
Setup(); // Setup of board, sets 0's to spots.

while (!endOfGame())
{
Player(); // Handle player, assuming it plays first, sets a 1 in one spot

if (!endOfGame())
{
AI();
}
}


void AI()
{
do
{
square = AIChoice();
} while (spots[square] == 0);

// Now we know spots[square] == 0, thus unfilled
spots[square] = 2; // AI
}

关于c - 井字游戏玩家 vs 人工智能——人工智能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327109/

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