Return best move for AI.
(board: Board)
| 67 | |
| 68 | |
| 69 | def best_move(board: Board) -> Optional[Tuple[int, int]]: |
| 70 | """Return best move for AI.""" |
| 71 | best_val = float("-inf") |
| 72 | move: Optional[Tuple[int, int]] = None |
| 73 | for i in range(3): |
| 74 | for j in range(3): |
| 75 | if board[i][j] == " ": |
| 76 | board[i][j] = "O" |
| 77 | val = minimax(board, 0, False) |
| 78 | board[i][j] = " " |
| 79 | if val > best_val: |
| 80 | best_val = val |
| 81 | move = (i, j) |
| 82 | return move |
| 83 | |
| 84 | |
| 85 | def make_move(row: int, col: int) -> None: |