AI忽略了Connect4中的设置参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AI忽略了Connect4中的设置参数相关的知识,希望对你有一定的参考价值。

我目前有90%的人完成了我的C ++ Connect4游戏,但是我遇到了一个非常烦人的错误。游戏进行得很好,除了一件事情外,其他所有东西都起作用。播放器与计算机对战,但是计算机会忽略我为其设置的参数,并将其放置在板上的任何位置。这可能是我的逻辑错误吗?我知道这不是AI的例子,但这是总结它的最佳方法。这是函数:

void columnChoiceComputer(int computer)
{
int number = 0;
srand(time(0));
cout << (rand() % 6 + 1) << endl;
if (cin.fail())
{
    cout << "Error!";
    srand(time(0));
    cout << (rand() % 6 + 1) << endl;
}
while ((rand() % 6 + 1) > WIDTH || (rand() % 6 + 1) <= 0)
{
    cout << "Please select a different column.";
    srand(time(0));
    cout << (rand() % 6 + 1) << endl;
}
while (boardMatrix[(HEIGHT - 1) - number][((rand() % 6 + 1) - 1)] != 0)
{
    number++;
    if (number > (HEIGHT - 1))
    {
        cout << "Please select a different column.";
        srand(time(0));
        cout << (rand() % 6 + 1) << endl;
        number = 0;
    }
};


boardMatrix[(HEIGHT - 1) - number][(rand() % 6 + 1) - 1] = computer;
lastMoveY = (HEIGHT - 1) - number;
lastMoveX = ((rand() % 6 + 1)) - 1;
(system("cls"));

}

答案

首先,非常感谢那些帮助过我的人。该解决方案非常简单,无需每次调用​​该函数时都调用(rand()%6 +1),而只需将随机数的第一次迭代设置为一个名为“ computerChoice”的变量,然后简单地调用该变量即可。变量。这是更新的代码:

int number = 0;
srand(time(0));
int computerChoice = (rand() % 6 + 1);

while (computerChoice > WIDTH || computerChoice <= 0)
{
    cout << "Please select a different column.";
    srand(time(0));
    cout << (rand() % 6 + 1) << endl;
}
while (boardMatrix[(HEIGHT - 1) - number][(computerChoice - 1)] != 0)
{
    number++;
    if (number > (HEIGHT - 1))
    {
        cout << "Please select a different column.";
        srand(time(0));
        cout << (rand() % 6 + 1) << endl;
        number = 0;
    }
};

boardMatrix[(HEIGHT - 1) - number][computerChoice - 1] = computer;
lastMoveY = (HEIGHT - 1) - number;
lastMoveX = (computerChoice) - 1;
(system("cls"));

以上是关于AI忽略了Connect4中的设置参数的主要内容,如果未能解决你的问题,请参考以下文章

UpdateNonDefaults 忽略设置为 false 的布尔参数

如何通过代码设置片段标签?

Chrome 地理位置似乎忽略了 maximumAge 参数

将多个输出中的hls属性设置为单独的片段代码

python connect4.py

Android Fragment 在布局中声明,如何设置参数?