def opponent_engine(board, randomness, depth): if random.random() < randomness: # random mode return random.choice(legal_moves(board)) best_move = None # minimax mode: try every move, best_score = float("-inf") # keep the one with the best score for move in legal_moves(board): score = minimax(apply_move(board, move), depth - 1, my_turn=False) if score > best_score: best_move, best_score = move, score return best_move