Exemple #1
0
vector<Move> calculate()
{
  vector<Move> list_moves;
  Search* engine;

  if (method_flag == 0)
  {
    engine = new AB(2);
  }
  else if (method_flag == 1)
  {
    Board::init();
    engine = new MCTS();
  }
  else if (method_flag == 2)  
  {
    AB * minimax = new AB(2);
    minimax->setPruning(false);
    engine = minimax;
  }
  else
  {
    vector<Move> moves = Board::available_moves(initial_board, Board::move_to_player(initial_move), initial_move, 0, 1);
    list_moves.push_back(moves[rand() % ((int)moves.size())]);
    moves = Board::available_moves(Board::make_move(initial_board, list_moves[0], Board::move_to_player(initial_move)), Board::move_to_player(initial_move + 1), initial_move + 1, 1, 0);
    list_moves.push_back(moves[rand() % ((int)moves.size())]);
  }

  if (method_flag != 3) {
    engine->solve(initial_board, initial_move);
    list_moves = engine->get_solution();

    delete engine;
  }

  return list_moves;
}