シンプルな三目並べプロジェクトを作成しようとしましたが、AI をランダムな場所に移動させようとしているので、AI は利用可能な場所に移動します。ただし、常に 2 回の移動を行います。1 回だけではなく、常に 2 回の移動を行う理由が不思議です。
つまり、ユーザーがスロット 1,1 に「O」を入力するとします。
0 1 2
+----+----+----+
0 | | | |
| | | |
+----+----+----+
| | | |
1 | | O | |
+----+----+----+
| | | |
2 | | | |
+---------------
次に、コンピューターは 2 回移動します: スロット 1,2 および 2,0 に移動します。
0 1 2
+----+----+----+
0 | | | |
| | | |
+----+----+----+
| | | |
1 | | O | X |
+----+----+----+
| | | |
2 | X | | |
+---------------
なぜこれが起こるのか知りたいですか?
これが私のコードです:
void compMove(char board[][columns])
{
int randomNum, randomNum1, i, j;
bool didMove = FALSE;
srand((int)time(NULL)); //Seed the random number generator
randomNum = rand() % 3;
randomNum1 = rand() % 3;
while(board[randomNum][randomNum1] != ' ')
{
randomNum = rand() % 3;
randomNum1 = rand() % 3;
}
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
if(i == randomNum && j == randomNum1)
{
board[i][j] = 'X';
didMove = TRUE;
break;
}
}
if(didMove == TRUE) break;
}
}