public List<Ability> simulatePriority(Game game) { allActions = new ConcurrentLinkedQueue<>(); Game sim = game.copy(); sim.setSimulation(true); forced = false; simulateOptions(sim); ArrayList<Ability> list = new ArrayList<>(allActions); Collections.reverse(list); if (!forced) { list.add(pass); } if (logger.isTraceEnabled()) { for (Ability a : allActions) { logger.info("ability==" + a); if (!a.getTargets().isEmpty()) { MageObject mageObject = game.getObject(a.getFirstTarget()); if (mageObject != null) { logger.info(" target=" + mageObject.getName()); } else { Player player = game.getPlayer(a.getFirstTarget()); if (player != null) { logger.info(" target=" + player.getName()); } } } } } return list; }
sim.setSimulation(true); if (sim.getPlayer(currentPlayer.getId()).activateAbility((ActivatedAbility) action.copy(), sim)) { sim.applyEffects();
/** * Copies game and replaces all players in copy with simulated players * * @param game * @return a new game object with simulated players */ protected Game createSimulation(Game game) { Game sim = game.copy(); sim.setSimulation(true); for (Player copyPlayer : sim.getState().getPlayers().values()) { Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()).copy(); if (!suggested.isEmpty()) { logger.debug(origPlayer.getName() + " suggested: " + suggested); } SimulatedPlayer2 newPlayer = new SimulatedPlayer2(copyPlayer.getId(), copyPlayer.getId().equals(playerId), suggested); newPlayer.restore(origPlayer); sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer); } return sim; }
/** * Copies game and replaces all players in copy with simulated players * * @param game * @return a new game object with simulated players */ protected Game createSimulation(Game game) { Game sim = game.copy(); for (Player copyPlayer: sim.getState().getPlayers().values()) { Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()).copy(); SimulatedPlayer newPlayer = new SimulatedPlayer(copyPlayer.getId(), copyPlayer.getId().equals(playerId), maxDepth); newPlayer.restore(origPlayer); sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer); } sim.setSimulation(true); return sim; }
/** * Copies game and replaces all players in copy with simulated players * Shuffles each players library so that there is no knowledge of its order * * @param game * @return a new game object with simulated players */ protected Game createSimulation(Game game, UUID playerId) { Game sim = game.copy(); for (Player copyPlayer: sim.getState().getPlayers().values()) { Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()).copy(); SimulatedPlayerMCTS newPlayer = new SimulatedPlayerMCTS(copyPlayer.getId(), true); newPlayer.restore(origPlayer); sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer); } randomizePlayers(sim, playerId); sim.setSimulation(true); return sim; }
mcts.setSimulation(true); mcts.resume(); return mcts;