[英]Tic Tac Toe AI issue in C
我嘗試制作一個簡單的井字游戲項目,並且試圖使AI移動到隨機位置,以便AI可以移動到任何可用的位置。 但是,它總是進行2步。 我想知道為什么它總是使2步而不是1步。
我的意思是,假設用戶在插槽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;
}
}
您無需循環即可在板上設置運動。
board[randomNum][randomNum1] = 'X';
足以設置。
您可能會兩次調用此函數,因為該函數只執行一個動作。
我懷疑您的checkWin
函數是罪魁禍首。 也許有一個=
某處你的意思是有一個==
。 但這只是一個沒有看到的猜測。
您的compMove
函數非常復雜,但沒有錯。 這是執行相同操作的代碼:
void compMove(char board[][columns]) {
int row, col;
/* DON'T seed RNG here; do it once in main() */
do {
row = rand() % 3;
col = rand() % 3;
} while (board[row][col] != ' ');
board[row][col] = 'X';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.