From 98ee9ff0c200596261afbc8ca789b39b07363210 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Sat, 19 Feb 2011 16:52:13 +0300 Subject: [PATCH] [mad ai] Critical AI fixes. Sync with Steward recent changes. New test command for lifes. New test scenarios. --- .../src/mage/player/ai/ComputerPlayer4.java | 679 ------------------ .../src/mage/player/ai/ComputerPlayer5.java | 564 --------------- .../src/mage/player/ai/ComputerPlayer6.java | 134 +++- .../mage/player/ai/GameStateEvaluator2.java | 13 +- .../mage/player/ai/SimulateBlockWorker2.java | 62 -- .../src/mage/player/ai/SimulatedPlayer2.java | 2 +- .../src/mage/player/ai/SimulationNode2.java | 16 +- .../java/mage/player/ai/ComputerPlayer.java | 6 +- Mage.Server/plugins/mage-player-ai-ma.jar | Bin 55095 -> 33225 bytes Mage.Tests/plugins/AIMinimax.properties | 2 +- Mage.Tests/plugins/mage-player-ai-ma.jar | Bin 55095 -> 33225 bytes Mage.Tests/plugins/mage-player-aiminimax.jar | Bin 36412 -> 36885 bytes Mage.Tests/scenario1.txt | 6 +- Mage.Tests/scenario2.txt | 22 + Mage.Tests/scenario3.txt | 24 + Mage.Tests/scenario4.txt | 21 + .../mage/test/serverside/PlayGameTest.java | 12 +- Mage/src/mage/game/GameImpl.java | 20 +- 18 files changed, 226 insertions(+), 1357 deletions(-) delete mode 100644 Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java delete mode 100644 Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java delete mode 100644 Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker2.java create mode 100644 Mage.Tests/scenario2.txt create mode 100644 Mage.Tests/scenario3.txt create mode 100644 Mage.Tests/scenario4.txt diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java deleted file mode 100644 index 52b80e504f..0000000000 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java +++ /dev/null @@ -1,679 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ - -package mage.player.ai; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.FutureTask; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.logging.Level; -import java.util.logging.Logger; -import mage.Constants.Outcome; -import mage.Constants.PhaseStep; -import mage.Constants.RangeOfInfluence; -import mage.abilities.Ability; -import mage.abilities.ActivatedAbility; -import mage.abilities.effects.Effect; -import mage.abilities.effects.SearchEffect; -import mage.cards.Card; -import mage.cards.Cards; -import mage.choices.Choice; -import mage.filter.FilterAbility; -import mage.game.Game; -import mage.game.combat.Combat; -import mage.game.combat.CombatGroup; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; -import mage.game.stack.StackAbility; -import mage.game.stack.StackObject; -import mage.game.turn.BeginCombatStep; -import mage.game.turn.BeginningPhase; -import mage.game.turn.CleanupStep; -import mage.game.turn.CombatDamageStep; -import mage.game.turn.CombatPhase; -import mage.game.turn.DeclareAttackersStep; -import mage.game.turn.DeclareBlockersStep; -import mage.game.turn.DrawStep; -import mage.game.turn.EndOfCombatStep; -import mage.game.turn.EndPhase; -import mage.game.turn.EndStep; -import mage.game.turn.Phase; -import mage.game.turn.PostCombatMainPhase; -import mage.game.turn.PostCombatMainStep; -import mage.game.turn.PreCombatMainPhase; -import mage.game.turn.PreCombatMainStep; -import mage.game.turn.UntapStep; -import mage.game.turn.UpkeepStep; -import mage.players.Player; -import mage.target.Target; -import mage.target.TargetCard; -import mage.util.Logging; - -/** - * - * @author BetaSteward_at_googlemail.com - */ -public class ComputerPlayer4 extends ComputerPlayer implements Player { - - private static final transient Logger logger = Logging.getLogger(ComputerPlayer4.class.getName()); - private static final ExecutorService pool = Executors.newFixedThreadPool(1); - - protected int maxDepth; - protected int maxNodes; - protected LinkedList actions = new LinkedList(); - protected List targets = new ArrayList(); - protected List choices = new ArrayList(); - protected Combat combat; - protected int currentScore; - protected SimulationNode2 root; - - public ComputerPlayer4(String name, RangeOfInfluence range) { - super(name, range); - maxDepth = Config2.maxDepth; - maxNodes = Config2.maxNodes; - } - - public ComputerPlayer4(final ComputerPlayer4 player) { - super(player); - this.maxDepth = player.maxDepth; - this.currentScore = player.currentScore; - if (player.combat != null) - this.combat = player.combat.copy(); - for (Ability ability: player.actions) { - actions.add(ability); - } - for (UUID targetId: player.targets) { - targets.add(targetId); - } - for (String choice: player.choices) { - choices.add(choice); - } - } - - @Override - public ComputerPlayer4 copy() { - return new ComputerPlayer4(this); - } - - @Override - public void priority(Game game) { - logState(game); - game.firePriorityEvent(playerId); - switch (game.getTurn().getStepType()) { - case UPKEEP: - case DRAW: - pass(); - break; - case PRECOMBAT_MAIN: - case POSTCOMBAT_MAIN: - if (game.getActivePlayerId().equals(playerId)) { - Player player = game.getPlayer(playerId); - System.out.println("Turn::"+game.getTurnNum()); - System.out.println("[" + game.getPlayer(playerId).getName() + "] " + game.getTurn().getStepType().name() +", life=" + player.getLife()); - String s = "["; - for (Card card : player.getHand().getCards(game)) { - s += card.getName() + ";"; - } - s += "]"; - System.out.println("Hand: " + s); - s = "["; - for (Permanent permanent : game.getBattlefield().getAllPermanents()) { - if (permanent.getOwnerId().equals(player.getId())) { - s += permanent.getName() + ";"; - } - } - s += "]"; - System.out.println("Permanents: " + s); - } - if (actions.size() == 0) { - calculateActions(game); - } - act(game); - break; - case BEGIN_COMBAT: - case DECLARE_ATTACKERS: - case DECLARE_BLOCKERS: - case COMBAT_DAMAGE: - case END_COMBAT: - case END_TURN: - pass(); - break; - case CLEANUP: - pass(); - break; - } - } - - protected void act(Game game) { - if (actions == null || actions.size() == 0) - pass(); - else { - boolean usedStack = false; - while (actions.peek() != null) { - Ability ability = actions.poll(); - System.out.println("[" + game.getPlayer(playerId).getName() + "] Action: " + ability.toString()); - this.activateAbility((ActivatedAbility) ability, game); - if (ability.isUsesStack()) - usedStack = true; - } - if (usedStack) - pass(); - } - } - - protected void calculateActions(Game game) { - currentScore = GameStateEvaluator2.evaluate(playerId, game); - if (!getNextAction(game)) { - Game sim = createSimulation(game); - SimulationNode2.resetCount(); - root = new SimulationNode2(sim, maxDepth, playerId); - logger.info("simulating actions"); - addActionsTimed(new FilterAbility()); - if (root.children.size() > 0) { - root = root.children.get(0); - int bestScore = GameStateEvaluator2.evaluate(playerId, root.getGame()); - if (bestScore > currentScore) { - actions = new LinkedList(root.abilities); - combat = root.combat; - } - } - } - } - - protected boolean getNextAction(Game game) { - if (root != null && root.children.size() > 0) { - SimulationNode2 test = root; - root = root.children.get(0); - while (root.children.size() > 0 && !root.playerId.equals(playerId)) { - test = root; - root = root.children.get(0); - } - logger.info("simlating -- game value:" + game.getState().getValue() + " test value:" + test.gameValue); - if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue() == test.gameValue) { - logger.info("simulating -- continuing previous action chain"); - actions = new LinkedList(root.abilities); - combat = root.combat; - return true; - } - else { - return false; - } - } - return false; - } - - protected int minimaxAB(SimulationNode2 node, FilterAbility filter, int depth, int alpha, int beta) { - UUID currentPlayerId = node.getGame().getPlayerList().get(); - SimulationNode2 bestChild = null; - for (SimulationNode2 child: node.getChildren()) { - if (alpha >= beta) { - logger.info("alpha beta pruning"); - break; - } - if (SimulationNode2.nodeCount > maxNodes) { - logger.info("simulating -- reached end-state, count=" + SimulationNode2.nodeCount); - break; - } - int val = addActions(child, filter, depth-1, alpha, beta); - if (!currentPlayerId.equals(playerId)) { - if (val < beta) { - beta = val; - bestChild = child; - if (node.getCombat() == null) - node.setCombat(child.getCombat()); - } - } - else { - if (val > alpha) { - alpha = val; - bestChild = child; - if (node.getCombat() == null) - node.setCombat(child.getCombat()); - } - } - } - node.children.clear(); - if (bestChild != null) - node.children.add(bestChild); - if (!currentPlayerId.equals(playerId)) { - //logger.info("returning minimax beta: " + beta); - return beta; - } - else { - //logger.info("returning minimax alpha: " + alpha); - return alpha; - } - } - - protected SearchEffect getSearchEffect(StackAbility ability) { - for (Effect effect: ability.getEffects()) { - if (effect instanceof SearchEffect) { - return (SearchEffect) effect; - } - } - return null; - } - - protected void resolve(SimulationNode2 node, int depth, Game game) { - StackObject ability = game.getStack().pop(); - if (ability instanceof StackAbility) { - SearchEffect effect = getSearchEffect((StackAbility) ability); - if (effect != null && ability.getControllerId().equals(playerId)) { - Target target = effect.getTarget(); - if (!target.doneChosing()) { - for (UUID targetId: target.possibleTargets(ability.getSourceId(), ability.getControllerId(), game)) { - Game sim = game.copy(); - StackAbility newAbility = (StackAbility) ability.copy(); - SearchEffect newEffect = getSearchEffect((StackAbility) newAbility); - newEffect.getTarget().addTarget(targetId, newAbility, sim); - sim.getStack().push(newAbility); - SimulationNode2 newNode = new SimulationNode2(sim, depth, ability.getControllerId()); - node.children.add(newNode); - newNode.getTargets().add(targetId); - logger.fine("simulating search -- node#: " + SimulationNode2.getCount() + "for player: " + sim.getPlayer(ability.getControllerId()).getName()); - } - return; - } - } - } - //logger.info("simulating resolve "); - ability.resolve(game); - game.applyEffects(); - game.getPlayers().resetPassed(); - game.getPlayerList().setCurrent(game.getActivePlayerId()); - } - - protected void addActionsTimed(final FilterAbility filter) { - FutureTask task = new FutureTask(new Callable() { - public Integer call() throws Exception - { - return addActions(root, filter, maxDepth, Integer.MIN_VALUE, Integer.MAX_VALUE); - } - }); - pool.execute(task); - try { - task.get(Config2.maxThinkSeconds, TimeUnit.MINUTES); - } catch (TimeoutException e) { - logger.info("simulating - timed out"); - task.cancel(true); - } catch (ExecutionException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - protected int addActions(SimulationNode2 node, FilterAbility filter, int depth, int alpha, int beta) { - logger.fine("addActions: " + depth + ", alpha=" + alpha + ", beta=" + beta); - Game game = node.getGame(); - int val; - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.info("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - if (depth <= 0 || SimulationNode2.nodeCount > maxNodes || game.isGameOver()) { - logger.fine("simulating -- reached end state, node count="+ SimulationNode2.nodeCount + ", depth="+depth); - val = GameStateEvaluator2.evaluate(playerId, game); - } - else if (node.getChildren().size() > 0) { - logger.fine("simulating -- somthing added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth-1, alpha, beta); - } - else { - if (logger.isLoggable(Level.FINE)) - logger.fine("simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + (node.getPlayerId().equals(playerId)?"yes":"no")); - if (allPassed(game)) { - if (!game.getStack().isEmpty()) { - resolve(node, depth, game); - } - else { -// int testScore = GameStateEvaluator.evaluate(playerId, game); -// if (testScore < currentScore) { -// // if score at end of step is worse than original score don't check any further -// logger.info("simulating -- abandoning current check, no immediate benefit"); -// return testScore; -// } - game.getPlayers().resetPassed(); - playNext(game, game.getActivePlayerId(), node); - } - } - - if (game.isGameOver()) { - val = GameStateEvaluator2.evaluate(playerId, game); - } - else if (node.getChildren().size() > 0) { - //declared attackers or blockers or triggered abilities - logger.fine("simulating -- attack/block/trigger added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth-1, alpha, beta); - } - else { - val = simulatePriority(node, game, filter, depth, alpha, beta); - } - } - - if (logger.isLoggable(Level.FINE)) - logger.fine("returning -- score: " + val + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); - return val; - - } - - protected int simulatePriority(SimulationNode2 node, Game game, FilterAbility filter, int depth, int alpha, int beta) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.info("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - node.setGameValue(game.getState().getValue()); - SimulatedPlayer2 currentPlayer = (SimulatedPlayer2) game.getPlayer(game.getPlayerList().get()); - //logger.info("simulating -- player " + currentPlayer.getName()); - SimulationNode2 bestNode = null; - List allActions = currentPlayer.simulatePriority(game, filter); - if (logger.isLoggable(Level.FINE)) - logger.fine("simulating -- adding " + allActions.size() + " children:" + allActions); - for (Ability action: allActions) { - Game sim = game.copy(); - if (sim.getPlayer(currentPlayer.getId()).activateAbility((ActivatedAbility) action.copy(), sim)) { - sim.applyEffects(); - if (!sim.isGameOver() && action.isUsesStack()) { - // only pass if the last action uses the stack - sim.getPlayer(currentPlayer.getId()).pass(); - sim.getPlayerList().getNext(); - } - SimulationNode2 newNode = new SimulationNode2(sim, action, depth, currentPlayer.getId()); - if (logger.isLoggable(Level.FINE)) - logger.fine("simulating -- node #:" + SimulationNode2.getCount() + " actions:" + action); - sim.checkStateAndTriggered(); - int val = addActions(newNode, filter, depth-1, alpha, beta); - if (!currentPlayer.getId().equals(playerId)) { - if (val < beta) { - beta = val; - bestNode = newNode; - node.setCombat(newNode.getCombat()); - } - } - else { - if (val > alpha) { - alpha = val; - bestNode = newNode; - node.setCombat(newNode.getCombat()); - if (node.getTargets().size() > 0) - targets = node.getTargets(); - if (node.getChoices().size() > 0) - choices = node.getChoices(); - } - } - if (alpha >= beta) { - //logger.info("simulating -- pruning"); - break; - } - if (SimulationNode2.nodeCount > maxNodes) { - logger.fine("simulating -- reached end-state"); - break; - } - } - } - if (bestNode != null) { - node.children.clear(); - node.children.add(bestNode); - } - if (!currentPlayer.getId().equals(playerId)) { - //logger.info("returning priority beta: " + beta); - return beta; - } - else { - //logger.info("returning priority alpha: " + alpha); - return alpha; - } - } - - protected boolean allPassed(Game game) { - for (Player player: game.getPlayers().values()) { - if (!player.isPassed() && !player.hasLost() && !player.hasLeft()) - return false; - } - return true; - } - - @Override - public boolean choose(Outcome outcome, Choice choice, Game game) { - if (choices.size() == 0) - return super.choose(outcome, choice, game); - if (!choice.isChosen()) { - for (String achoice: choices) { - choice.setChoice(achoice); - if (choice.isChosen()) { - choices.clear(); - return true; - } - } - return false; - } - return true; - } - - @Override - public boolean chooseTarget(Cards cards, TargetCard target, Ability source, Game game) { - if (targets.size() == 0) - return super.chooseTarget(cards, target, source, game); - if (!target.doneChosing()) { - for (UUID targetId: targets) { - target.addTarget(targetId, source, game); - if (target.doneChosing()) { - targets.clear(); - return true; - } - } - return false; - } - return true; - } - - @Override - public boolean choose(Cards cards, TargetCard target, Game game) { - if (targets.size() == 0) - return super.choose(cards, target, game); - if (!target.doneChosing()) { - for (UUID targetId: targets) { - target.add(targetId, game); - if (target.doneChosing()) { - targets.clear(); - return true; - } - } - return false; - } - return true; - } - - public void playNext(Game game, UUID activePlayerId, SimulationNode2 node) { - boolean skip = false; - while (true) { - Phase currentPhase = game.getPhase(); - if (!skip) - currentPhase.getStep().endStep(game, activePlayerId); - game.applyEffects(); - switch (currentPhase.getStep().getType()) { - case UNTAP: - game.getPhase().setStep(new UpkeepStep()); - break; - case UPKEEP: - game.getPhase().setStep(new DrawStep()); - break; - case DRAW: - game.getTurn().setPhase(new PreCombatMainPhase()); - game.getPhase().setStep(new PreCombatMainStep()); - break; - case PRECOMBAT_MAIN: - game.getTurn().setPhase(new CombatPhase()); - game.getPhase().setStep(new BeginCombatStep()); - break; - case BEGIN_COMBAT: - game.getPhase().setStep(new DeclareAttackersStep()); - break; - case DECLARE_ATTACKERS: - game.getPhase().setStep(new DeclareBlockersStep()); - break; - case DECLARE_BLOCKERS: - game.getPhase().setStep(new CombatDamageStep(true)); - break; - case COMBAT_DAMAGE: - if (((CombatDamageStep)currentPhase.getStep()).getFirst()) - game.getPhase().setStep(new CombatDamageStep(false)); - else - game.getPhase().setStep(new EndOfCombatStep()); - break; - case END_COMBAT: - game.getTurn().setPhase(new PostCombatMainPhase()); - game.getPhase().setStep(new PostCombatMainStep()); - break; - case POSTCOMBAT_MAIN: - game.getTurn().setPhase(new EndPhase()); - game.getPhase().setStep(new EndStep()); - break; - case END_TURN: - game.getPhase().setStep(new CleanupStep()); - break; - case CLEANUP: - game.getPhase().getStep().beginStep(game, activePlayerId); - if (!game.checkStateAndTriggered() && !game.isGameOver()) { - game.getState().setActivePlayerId(game.getState().getPlayerList(game.getActivePlayerId()).getNext()); - game.getTurn().setPhase(new BeginningPhase()); - game.getPhase().setStep(new UntapStep()); - } - } - if (!game.getStep().skipStep(game, game.getActivePlayerId())) { - if (game.getTurn().getStepType() == PhaseStep.DECLARE_ATTACKERS) { - game.fireEvent(new GameEvent(GameEvent.EventType.DECLARE_ATTACKERS_STEP_PRE, null, null, activePlayerId)); - if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_ATTACKERS, activePlayerId, activePlayerId))) { - for (Combat engagement: ((SimulatedPlayer2)game.getPlayer(activePlayerId)).addAttackers(game)) { - Game sim = game.copy(); - UUID defenderId = game.getOpponents(playerId).iterator().next(); - for (CombatGroup group: engagement.getGroups()) { - for (UUID attackerId: group.getAttackers()) { - sim.getPlayer(activePlayerId).declareAttacker(attackerId, defenderId, sim); - } - } - sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, playerId, playerId)); - SimulationNode2 newNode = new SimulationNode2(sim, node.getDepth()-1, activePlayerId); - logger.info("simulating -- node #:" + SimulationNode2.getCount() + " declare attakers"); - newNode.setCombat(sim.getCombat()); - node.children.add(newNode); - } - } - } - else if (game.getTurn().getStepType() == PhaseStep.DECLARE_BLOCKERS) { - game.fireEvent(new GameEvent(GameEvent.EventType.DECLARE_BLOCKERS_STEP_PRE, null, null, activePlayerId)); - if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_BLOCKERS, activePlayerId, activePlayerId))) { - for (UUID defenderId: game.getCombat().getDefenders()) { - //check if defender is being attacked - if (game.getCombat().isAttacked(defenderId, game)) { - for (Combat engagement: ((SimulatedPlayer2)game.getPlayer(defenderId)).addBlockers(game)) { - Game sim = game.copy(); - for (CombatGroup group: engagement.getGroups()) { - for (UUID blockerId: group.getBlockers()) { - group.addBlocker(blockerId, defenderId, sim); - } - } - sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, playerId, playerId)); - SimulationNode2 newNode = new SimulationNode2(sim, node.getDepth()-1, defenderId); - logger.info("simulating -- node #:" + SimulationNode2.getCount() + " declare blockers"); - newNode.setCombat(sim.getCombat()); - node.children.add(newNode); - } - } - } - } - } - else { - game.getStep().beginStep(game, activePlayerId); - } - if (game.getStep().getHasPriority()) - break; - } - else { - skip = true; - } - } - game.checkStateAndTriggered(); - } - - @Override - public void selectAttackers(Game game) { - logger.info("selectAttackers"); - if (combat != null) { - UUID opponentId = game.getCombat().getDefenders().iterator().next(); - for (UUID attackerId: combat.getAttackers()) { - logger.info("declare attacker: " + game.getCard(attackerId).getName()); - this.declareAttacker(attackerId, opponentId, game); - } - } - } - - @Override - public void selectBlockers(Game game) { - logger.info("selectBlockers"); - if (combat != null && combat.getGroups().size() > 0) { - List groups = game.getCombat().getGroups(); - for (int i = 0; i < groups.size(); i++) { - if (i < combat.getGroups().size()) { - for (UUID blockerId: combat.getGroups().get(i).getBlockers()) { - this.declareBlocker(blockerId, groups.get(i).getAttackers().get(0), game); - } - } - } - } - } - - /** - * 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()); - SimulatedPlayer2 newPlayer = new SimulatedPlayer2(copyPlayer.getId(), copyPlayer.getId().equals(playerId)); - newPlayer.restore(origPlayer); - sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer); - } - return sim; - } - -} diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java deleted file mode 100644 index f320a1da3d..0000000000 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java +++ /dev/null @@ -1,564 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ - -package mage.player.ai; - -import java.util.LinkedList; -import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; -import mage.Constants.AbilityType; -import mage.Constants.PhaseStep; -import mage.Constants.RangeOfInfluence; -import mage.Constants.Zone; -import mage.abilities.Ability; -import mage.cards.Card; -import mage.filter.FilterAbility; -import mage.game.Game; -import mage.game.combat.Combat; -import mage.game.combat.CombatGroup; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; -import mage.game.turn.BeginCombatStep; -import mage.game.turn.BeginningPhase; -import mage.game.turn.CleanupStep; -import mage.game.turn.CombatDamageStep; -import mage.game.turn.CombatPhase; -import mage.game.turn.DeclareAttackersStep; -import mage.game.turn.DeclareBlockersStep; -import mage.game.turn.DrawStep; -import mage.game.turn.EndOfCombatStep; -import mage.game.turn.EndPhase; -import mage.game.turn.EndStep; -import mage.game.turn.PostCombatMainPhase; -import mage.game.turn.PostCombatMainStep; -import mage.game.turn.Step; -import mage.game.turn.UntapStep; -import mage.game.turn.UpkeepStep; -import mage.players.Player; -import mage.util.Logging; - -/** - * - * @author BetaSteward_at_googlemail.com - */ -public class ComputerPlayer5 extends ComputerPlayer4 implements Player { - - private static final transient Logger logger = Logging.getLogger(ComputerPlayer5.class.getName()); - - private static FilterAbility filterLand = new FilterAbility(); - private static FilterAbility filterNotLand = new FilterAbility(); - - static { - filterLand.getTypes().add(AbilityType.PLAY_LAND); - filterLand.setZone(Zone.HAND); - - filterNotLand.getTypes().add(AbilityType.PLAY_LAND); - filterNotLand.setZone(Zone.HAND); - filterNotLand.setNotFilter(true); - - logger.setLevel(Level.ALL); - } - - public ComputerPlayer5(String name, RangeOfInfluence range) { - super(name, range); - maxDepth = Config2.maxDepth; - maxNodes = Config2.maxNodes; - } - - public ComputerPlayer5(final ComputerPlayer5 player) { - super(player); - } - - @Override - public ComputerPlayer5 copy() { - return new ComputerPlayer5(this); - } - - @Override - public void priority(Game game) { - logState(game); - game.firePriorityEvent(playerId); - switch (game.getTurn().getStepType()) { - case UPKEEP: - case DRAW: - pass(); - break; - case PRECOMBAT_MAIN: - if (game.getActivePlayerId().equals(playerId)) { - Player player = game.getPlayer(playerId); - System.out.println("Turn:"+game.getTurnNum()); - System.out.println("[" + game.getPlayer(playerId).getName() + "] Precombat Main, life=" + player.getLife()); - String s = "["; - for (Card card : player.getHand().getCards(game)) { - s += card.getName() + ";"; - } - s += "]"; - System.out.println("Hand: " + s); - s = "["; - for (Permanent permanent : game.getBattlefield().getAllPermanents()) { - if (permanent.getOwnerId().equals(player.getId())) { - s += permanent.getName() + ";"; - } - } - s += "]"; - System.out.println("Permanents: " + s); - if (actions.size() == 0) { - calculatePreCombatActions(game); - } - act(game); - } - else - pass(); - break; - case BEGIN_COMBAT: - pass(); - break; - case DECLARE_ATTACKERS: - if (!game.getActivePlayerId().equals(playerId)) { - if (actions.size() == 0) { - calculatePreCombatActions(game); - } - act(game); - } - else - pass(); - break; - case DECLARE_BLOCKERS: - case COMBAT_DAMAGE: - case END_COMBAT: - pass(); - break; - case POSTCOMBAT_MAIN: - if (game.getActivePlayerId().equals(playerId)) { - if (actions.size() == 0) { - calculatePostCombatActions(game); - } - act(game); - } - else - pass(); - break; - case END_TURN: - case CLEANUP: - pass(); - break; - } - } - - protected void calculatePreCombatActions(Game game) { - //if (!getNextAction(game)) { - currentScore = GameStateEvaluator2.evaluate(playerId, game); - Game sim = createSimulation(game); - SimulationNode2.resetCount(); - root = new SimulationNode2(sim, maxDepth, playerId); - logger.fine("simulating pre combat actions -----------------------------------------------------------------------------------------"); - - addActionsTimed(new FilterAbility()); - if (root.children.size() > 0) { - root = root.children.get(0); - int bestScore = GameStateEvaluator2.evaluate(playerId, root.getGame()); - if (bestScore > currentScore) { - actions = new LinkedList(root.abilities); - combat = root.combat; - } - } - //} - } - - protected void calculatePostCombatActions(Game game) { - if (!getNextAction(game)) { - currentScore = GameStateEvaluator2.evaluate(playerId, game); - Game sim = createSimulation(game); - SimulationNode2.resetCount(); - root = new SimulationNode2(sim, maxDepth, playerId); - logger.fine("simulating post combat actions ----------------------------------------------------------------------------------------"); - addActionsTimed(new FilterAbility()); - if (root.children.size() > 0) { - root = root.children.get(0); - int bestScore = GameStateEvaluator2.evaluate(playerId, root.getGame()); - if (bestScore > currentScore) { - actions = new LinkedList(root.abilities); - combat = root.combat; - } - } - } - } - - @Override - protected int addActions(SimulationNode2 node, FilterAbility filter, int depth, int alpha, int beta) { - boolean stepFinished = false; - int val; - Game game = node.getGame(); - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - if (depth <= 0 || SimulationNode2.nodeCount > maxNodes || game.isGameOver()) { - logger.fine("simulating -- reached end state"); - val = GameStateEvaluator2.evaluate(playerId, game); - } - else if (node.getChildren().size() > 0) { - logger.fine("simulating -- somthing added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth-1, alpha, beta); - } - else { - if (logger.isLoggable(Level.FINE)) - logger.fine("simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(game.getPlayerList().get()).getName()); - if (allPassed(game)) { - if (!game.getStack().isEmpty()) { - resolve(node, depth, game); - } - else { - stepFinished = true; - } - } - - if (game.isGameOver()) { - val = GameStateEvaluator2.evaluate(playerId, game); - } - else if (stepFinished) { - logger.fine("step finished"); - int testScore = GameStateEvaluator2.evaluate(playerId, game); - if (game.getActivePlayerId().equals(playerId)) { - if (testScore <= currentScore) { - // if score at end of step is worse than original score don't check further - logger.fine("simulating -- abandoning check, no immediate benefit"); - val = testScore; - } - else { - switch (game.getTurn().getStepType()) { - case PRECOMBAT_MAIN: - val = -simulateCombat(game, node, depth-1, alpha, beta, false); - break; - case POSTCOMBAT_MAIN: - val = -simulateCounterAttack(game, node, depth-1, alpha, beta); - break; - default: - val = -GameStateEvaluator2.evaluate(playerId, game); - break; - } - } - } - else { - if (game.getTurn().getStepType() == PhaseStep.DECLARE_ATTACKERS) - val = simulateBlockers(game, node, playerId, depth-1, alpha, beta, true); - else - val = GameStateEvaluator2.evaluate(playerId, game); - } - } - else if (node.getChildren().size() > 0) { - logger.fine("simulating -- trigger added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth, alpha, beta); - } - else { - val = simulatePriority(node, game, filter, depth, alpha, beta); - } - } - - if (logger.isLoggable(Level.FINE)) - logger.fine("returning -- score: " + val + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); - return val; - - } - - protected int simulateCombat(Game game, SimulationNode2 node, int depth, int alpha, int beta, boolean counter) { - Integer val = null; - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - if (game.getTurn().getStepType() != PhaseStep.DECLARE_BLOCKERS) { - game.getTurn().setPhase(new CombatPhase()); - if (game.getPhase().beginPhase(game, game.getActivePlayerId())) { - simulateStep(game, new BeginCombatStep()); - game.getPhase().setStep(new DeclareAttackersStep()); - if (!game.getStep().skipStep(game, game.getActivePlayerId())) { - game.fireEvent(new GameEvent(GameEvent.EventType.DECLARE_ATTACKERS_STEP_PRE, null, null, game.getActivePlayerId())); - if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_ATTACKERS, game.getActivePlayerId(), game.getActivePlayerId()))) { - val = simulateAttackers(game, node, game.getActivePlayerId(), depth, alpha, beta, counter); - } - } - else if (!counter) { - simulateToEnd(game); - val = simulatePostCombatMain(game, node, depth, alpha, beta); - } - } - } - else { - if (!game.getStep().skipStep(game, game.getActivePlayerId())) { - game.fireEvent(new GameEvent(GameEvent.EventType.DECLARE_BLOCKERS_STEP_PRE, null, null, game.getActivePlayerId())); - if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_BLOCKERS, game.getActivePlayerId(), game.getActivePlayerId()))) { - //only suitable for two player games - only simulates blocks for 1st defender - val = simulateBlockers(game, node, game.getCombat().getDefenders().iterator().next(), depth, alpha, beta, counter); - } - } - else if (!counter) { - finishCombat(game); - val = GameStateEvaluator2.evaluate(playerId, game); -// val = simulateCounterAttack(game, node, depth, alpha, beta); - } - } - if (val == null) - val = GameStateEvaluator2.evaluate(playerId, game); - if (logger.isLoggable(Level.FINE)) - logger.fine("returning -- combat score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); - return val; - } - - - protected int simulateAttackers(Game game, SimulationNode2 node, UUID attackerId, int depth, int alpha, int beta, boolean counter) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - Integer val = null; - SimulationNode2 bestNode = null; - SimulatedPlayer2 attacker = (SimulatedPlayer2) game.getPlayer(attackerId); - - for (Combat engagement: attacker.addAttackers(game)) { - if (alpha >= beta) { - //logger.fine("simulating -- pruning attackers"); - break; - } - Game sim = game.copy(); - UUID defenderId = game.getOpponents(playerId).iterator().next(); - for (CombatGroup group: engagement.getGroups()) { - for (UUID attackId: group.getAttackers()) { - sim.getPlayer(attackerId).declareAttacker(attackId, defenderId, sim); - } - } - sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, playerId, playerId)); - SimulationNode2 newNode = new SimulationNode2(sim, depth, game.getActivePlayerId()); - if (logger.isLoggable(Level.FINE)) - logger.fine("simulating attack -- node#: " + SimulationNode2.getCount()); - sim.checkStateAndTriggered(); - while (!sim.getStack().isEmpty()) { - sim.getStack().resolve(sim); - logger.fine("resolving triggered abilities"); - sim.applyEffects(); - } - sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARE_ATTACKERS_STEP_POST, sim.getActivePlayerId(), sim.getActivePlayerId())); - Combat simCombat = sim.getCombat().copy(); - sim.getPhase().setStep(new DeclareBlockersStep()); - val = simulateCombat(sim, newNode, depth-1, alpha, beta, counter); - if (!attackerId.equals(playerId)) { - if (val < beta) { - beta = val; - bestNode = newNode; - node.setCombat(simCombat); - } - } - else { - if (val > alpha) { - alpha = val; - bestNode = newNode; - node.setCombat(simCombat); - } - } - } - if (val == null) - val = GameStateEvaluator2.evaluate(playerId, game); - if (bestNode != null) { - node.children.clear(); - node.children.add(bestNode); - } - if (logger.isLoggable(Level.FINE)) - logger.fine("returning -- combat attacker score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); - return val; - } - - protected int simulateBlockers(Game game, SimulationNode2 node, UUID defenderId, int depth, int alpha, int beta, boolean counter) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - Integer val = null; - SimulationNode2 bestNode = null; - //check if defender is being attacked - if (game.getCombat().isAttacked(defenderId, game)) { - SimulatedPlayer2 defender = (SimulatedPlayer2) game.getPlayer(defenderId); - for (Combat engagement: defender.addBlockers(game)) { - if (alpha >= beta) { - logger.fine("simulating -- pruning blockers"); - break; - } - Game sim = game.copy(); - for (CombatGroup group : engagement.getGroups()) { - if (group.getAttackers().size() > 0) { - UUID attackerId = group.getAttackers().get(0); - for (UUID blockerId : group.getBlockers()) { - sim.getPlayer(defenderId).declareBlocker(blockerId, attackerId, sim); - } - } - - } - sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, playerId, playerId)); - SimulationNode2 newNode = new SimulationNode2(sim, depth, defenderId); - if (logger.isLoggable(Level.FINE)) - logger.fine("simulating block -- node#: " + SimulationNode2.getCount()); - sim.checkStateAndTriggered(); - while (!sim.getStack().isEmpty()) { - sim.getStack().resolve(sim); - logger.fine("resolving triggered abilities"); - sim.applyEffects(); - } - sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARE_BLOCKERS_STEP_POST, sim.getActivePlayerId(), sim.getActivePlayerId())); - Combat simCombat = sim.getCombat().copy(); - finishCombat(sim); - if (sim.isGameOver()) { - val = GameStateEvaluator2.evaluate(playerId, sim); - } - else if (!counter) { - val = simulatePostCombatMain(sim, newNode, depth-1, alpha, beta); - } - else - val = GameStateEvaluator2.evaluate(playerId, sim); - if (!defenderId.equals(playerId)) { - if (val < beta) { - beta = val; - bestNode = newNode; - node.setCombat(simCombat); - } - } - else { - if (val > alpha) { - alpha = val; - bestNode = newNode; - node.setCombat(simCombat); - } - } - } - } - if (val == null) - val = GameStateEvaluator2.evaluate(playerId, game); - if (bestNode != null) { - node.children.clear(); - node.children.add(bestNode); - } - if (logger.isLoggable(Level.FINE)) - logger.fine("returning -- combat blocker score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); - return val; - } - - protected int simulateCounterAttack(Game game, SimulationNode2 node, int depth, int alpha, int beta) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - Integer val = null; - if (!game.isGameOver()) { - logger.fine("simulating -- counter attack"); - simulateToEnd(game); - game.getState().setActivePlayerId(game.getState().getPlayerList(game.getActivePlayerId()).getNext()); - game.getTurn().setPhase(new BeginningPhase()); - if (game.getPhase().beginPhase(game, game.getActivePlayerId())) { - simulateStep(game, new UntapStep()); - simulateStep(game, new UpkeepStep()); - simulateStep(game, new DrawStep()); - game.getPhase().endPhase(game, game.getActivePlayerId()); - } - val = simulateCombat(game, node, depth-1, alpha, beta, true); - if (logger.isLoggable(Level.FINE)) - logger.fine("returning -- counter attack score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); - } - if (val == null) - val = GameStateEvaluator2.evaluate(playerId, game); - return val; - } - - protected void simulateStep(Game game, Step step) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return; - } - if (!game.isGameOver()) { - game.getPhase().setStep(step); - if (!step.skipStep(game, game.getActivePlayerId())) { - step.beginStep(game, game.getActivePlayerId()); - game.checkStateAndTriggered(); - while (!game.getStack().isEmpty()) { - game.getStack().resolve(game); - game.applyEffects(); - } - step.endStep(game, game.getActivePlayerId()); - } - } - } - - protected void finishCombat(Game game) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return; - } - simulateStep(game, new CombatDamageStep(true)); - simulateStep(game, new CombatDamageStep(false)); - simulateStep(game, new EndOfCombatStep()); - } - - protected int simulatePostCombatMain(Game game, SimulationNode2 node, int depth, int alpha, int beta) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return GameStateEvaluator2.evaluate(playerId, game); - } - logger.fine("simulating -- post combat main"); - game.getTurn().setPhase(new PostCombatMainPhase()); - if (game.getPhase().beginPhase(game, game.getActivePlayerId())) { - game.getPhase().setStep(new PostCombatMainStep()); - game.getStep().beginStep(game, playerId); - game.getPlayers().resetPassed(); - return addActions(node, new FilterAbility(), depth, alpha, beta); - } - return simulateCounterAttack(game, node, depth, alpha, beta); - } - - protected void simulateToEnd(Game game) { - if (Thread.interrupted()) { - Thread.currentThread().interrupt(); - logger.fine("interrupted"); - return; - } - if (!game.isGameOver()) { - game.getTurn().getPhase().endPhase(game, game.getActivePlayerId()); - game.getTurn().setPhase(new EndPhase()); - if (game.getTurn().getPhase().beginPhase(game, game.getActivePlayerId())) { - simulateStep(game, new EndStep()); - simulateStep(game, new CleanupStep()); - } - } - } - -} diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index 272de90b47..f26b622914 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -33,12 +33,14 @@ import mage.Constants.PhaseStep; import mage.Constants.RangeOfInfluence; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; +import mage.abilities.common.PassAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.SearchEffect; import mage.cards.Card; import mage.cards.Cards; import mage.choices.Choice; import mage.filter.FilterAbility; +import mage.filter.common.FilterCreatureForAttack; import mage.game.Game; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; @@ -116,35 +118,35 @@ public class ComputerPlayer6 extends ComputerPlayer implements pass(); break; case PRECOMBAT_MAIN: - case BEGIN_COMBAT: - case DECLARE_ATTACKERS: case DECLARE_BLOCKERS: - case COMBAT_DAMAGE: - case END_COMBAT: case POSTCOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { - Player player = game.getPlayer(playerId); - System.out.println("Turn::"+game.getTurnNum()); - System.out.println("[" + game.getPlayer(playerId).getName() + "] " + game.getTurn().getStepType().name() +", life=" + player.getLife()); - String s = "["; - for (Card card : player.getHand().getCards(game)) { - s += card.getName() + ";"; + printOutState(game, playerId); + if (actions.size() == 0) { + calculateActions(game); } - s += "]"; - System.out.println("Hand: " + s); - s = "["; - for (Permanent permanent : game.getBattlefield().getAllPermanents()) { - if (permanent.getOwnerId().equals(player.getId())) { - s += permanent.getName() + ";"; - } + act(game); + } else { + pass(); + } + break; + case BEGIN_COMBAT: + case COMBAT_DAMAGE: + case END_COMBAT: + pass(); + break; + case DECLARE_ATTACKERS: + if (!game.getActivePlayerId().equals(playerId)) { + printOutState(game, playerId); + printOutState(game, game.getOpponents(playerId).iterator().next()); + if (actions.size() == 0) { + calculateActions(game); } - s += "]"; - System.out.println("Permanents: " + s); + act(game); + printOutState(game, playerId); + } else { + pass(); } - if (actions.size() == 0) { - calculateActions(game); - } - act(game); break; case END_TURN: pass(); @@ -155,6 +157,36 @@ public class ComputerPlayer6 extends ComputerPlayer implements } } + private void printOutState(Game game, UUID playerId) { + Player player = game.getPlayer(playerId); + System.out.println("Turn::"+game.getTurnNum()); + System.out.println("[" + game.getPlayer(playerId).getName() + "] " + game.getTurn().getStepType().name() +", life=" + player.getLife()); + Player opponent = game.getPlayer(game.getOpponents(playerId).iterator().next()); + System.out.println("[Opponent] life=" + opponent.getLife()); + + String s = "["; + for (Card card : player.getHand().getCards(game)) { + s += card.getName() + ";"; + } + s += "]"; + System.out.println("Hand: " + s); + s = "["; + for (Permanent permanent : game.getBattlefield().getAllPermanents()) { + if (permanent.getOwnerId().equals(player.getId())) { + s += permanent.getName(); + if (permanent.isTapped()) { + s+="(tapped)"; + } + if (permanent.isAttacking()) { + s+="(attacking)"; + } + s+=";"; + } + } + s += "]"; + System.out.println("Permanents: " + s); + } + protected void act(Game game) { if (actions == null || actions.size() == 0) pass(); @@ -177,7 +209,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements if (!getNextAction(game)) { Game sim = createSimulation(game); SimulationNode2.resetCount(); - root = new SimulationNode2(sim, maxDepth, playerId); + root = new SimulationNode2(null, sim, maxDepth, playerId); logger.info("simulating actions"); //int bestScore = addActionsTimed(new FilterAbility()); addActionsTimed(new FilterAbility()); @@ -203,6 +235,19 @@ public class ComputerPlayer6 extends ComputerPlayer implements } logger.info("simlating -- game value:" + game.getState().getValue() + " test value:" + test.gameValue); if (root.playerId.equals(playerId) && root.abilities != null && game.getState().getValue() == test.gameValue) { + + // Try to fix horizon effect + if (root.combat == null || root.combat.getAttackers().size() == 0) { + FilterCreatureForAttack attackFilter = new FilterCreatureForAttack(); + attackFilter.getControllerId().add(playerId); + List attackers = game.getBattlefield().getAllActivePermanents(attackFilter); + if (attackers.size() > 0) { + // we have attackers but don't attack with any of them + // let's try once again to avoid possible horizon effect + return false; + } + } + logger.info("simulating -- continuing previous action chain"); actions = new LinkedList(root.abilities); combat = root.combat; @@ -219,6 +264,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements UUID currentPlayerId = node.getGame().getPlayerList().get(); SimulationNode2 bestChild = null; for (SimulationNode2 child: node.getChildren()) { + Combat _combat = child.getCombat(); if (alpha >= beta) { logger.info("alpha beta pruning"); break; @@ -232,16 +278,20 @@ public class ComputerPlayer6 extends ComputerPlayer implements if (val < beta) { beta = val; bestChild = child; - if (node.getCombat() == null) - node.setCombat(child.getCombat()); + if (node.getCombat() == null) { + node.setCombat(_combat); + bestChild.setCombat(_combat); + } } } else { if (val > alpha) { alpha = val; bestChild = child; - if (node.getCombat() == null) - node.setCombat(child.getCombat()); + if (node.getCombat() == null) { + node.setCombat(_combat); + bestChild.setCombat(_combat); + } } } } @@ -280,7 +330,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements SearchEffect newEffect = getSearchEffect((StackAbility) newAbility); newEffect.getTarget().addTarget(targetId, newAbility, sim); sim.getStack().push(newAbility); - SimulationNode2 newNode = new SimulationNode2(sim, depth, ability.getControllerId()); + SimulationNode2 newNode = new SimulationNode2(node, sim, depth, ability.getControllerId()); node.children.add(newNode); newNode.getTargets().add(targetId); logger.fine("simulating search -- node#: " + SimulationNode2.getCount() + "for player: " + sim.getPlayer(ability.getControllerId()).getName()); @@ -315,6 +365,9 @@ public class ComputerPlayer6 extends ComputerPlayer implements } catch (InterruptedException e) { e.printStackTrace(); task.cancel(true); + } catch (Exception e) { + e.printStackTrace(); + task.cancel(true); } //TODO: timeout handling return 0; @@ -389,12 +442,14 @@ public class ComputerPlayer6 extends ComputerPlayer implements Game sim = game.copy(); if (sim.getPlayer(currentPlayer.getId()).activateAbility((ActivatedAbility) action.copy(), sim)) { sim.applyEffects(); + if (checkForRepeatedAction(sim, node, action, currentPlayer.getId())) + continue; if (!sim.isGameOver() && action.isUsesStack()) { // only pass if the last action uses the stack sim.getPlayer(currentPlayer.getId()).pass(); sim.getPlayerList().getNext(); } - SimulationNode2 newNode = new SimulationNode2(sim, action, depth, currentPlayer.getId()); + SimulationNode2 newNode = new SimulationNode2(node, sim, action, depth, currentPlayer.getId()); if (logger.isLoggable(Level.FINE)) logger.fine("simulating -- node #:" + SimulationNode2.getCount() + " actions:" + action); sim.checkStateAndTriggered(); @@ -572,7 +627,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements } } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, playerId, playerId)); - SimulationNode2 newNode = new SimulationNode2(sim, node.getDepth()-1, activePlayerId); + SimulationNode2 newNode = new SimulationNode2(node, sim, node.getDepth()-1, activePlayerId); logger.info("simulating -- node #:" + SimulationNode2.getCount() + " declare attakers"); newNode.setCombat(sim.getCombat()); node.children.add(newNode); @@ -593,7 +648,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements } } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, playerId, playerId)); - SimulationNode2 newNode = new SimulationNode2(sim, node.getDepth()-1, defenderId); + SimulationNode2 newNode = new SimulationNode2(node, sim, node.getDepth()-1, defenderId); logger.info("simulating -- node #:" + SimulationNode2.getCount() + " declare blockers"); newNode.setCombat(sim.getCombat()); node.children.add(newNode); @@ -660,4 +715,19 @@ public class ComputerPlayer6 extends ComputerPlayer implements return sim; } + private boolean checkForRepeatedAction(Game sim, SimulationNode2 node, Ability action, UUID playerId) { + if (action instanceof PassAbility) + return false; + int val = GameStateEvaluator2.evaluate(playerId, sim); + SimulationNode2 test = node.getParent(); + while (test != null && !test.getPlayerId().equals(playerId)) { + test = test.getParent(); + } + if (test != null && test.getAbilities() != null && test.getAbilities().size() == 1) { + if (action.toString().equals(test.getAbilities().get(0).toString()) && GameStateEvaluator2.evaluate(playerId, sim) == val) { + return true; + } + } + return false; + } } diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java index 210ac15ba9..3aa0a88949 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/GameStateEvaluator2.java @@ -44,9 +44,9 @@ public class GameStateEvaluator2 { Player opponent = game.getPlayer(game.getOpponents(playerId).iterator().next()); if (game.isGameOver()) { if (player.hasLost() || opponent.hasWon()) - return Integer.MIN_VALUE; + return LOSE_GAME_SCORE; if (opponent.hasLost() || player.hasWon()) - return Integer.MAX_VALUE; + return WIN_GAME_SCORE; } //int lifeScore = (player.getLife() - opponent.getLife()) * LIFE_FACTOR; @@ -73,12 +73,11 @@ public class GameStateEvaluator2 { } //permanentScore *= PERMANENT_FACTOR; - /*int handScore = 0; - handScore = 7 - opponent.getHand().size(); - handScore += Math.min(7, player.getHand().size()); - handScore *= HAND_FACTOR;*/ + int handScore = 0; + handScore = player.getHand().size() - opponent.getHand().size(); + handScore *= 5; - int score = lifeScore + permanentScore /*+ handScore*/; + int score = lifeScore + permanentScore + handScore; //if (logger.isLoggable(Level.FINE)) logger.fine("game state evaluated to- lifeScore:" + lifeScore + " permanentScore:" + permanentScore /*+ " handScore:" + handScore*/ + "total:" + score); return score; diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker2.java deleted file mode 100644 index d779c311e7..0000000000 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker2.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ - -package mage.player.ai; - -import java.util.concurrent.Callable; -import java.util.logging.Level; -import java.util.logging.Logger; - -import mage.util.Logging; - -/** - * - * @author BetaSteward_at_googlemail.com - */ -public class SimulateBlockWorker2 implements Callable { - - private final static Logger logger = Logging.getLogger(SimulationWorker2.class.getName()); - - private SimulationNode2 node; - private ComputerPlayer5 player; - - public SimulateBlockWorker2(ComputerPlayer5 player, SimulationNode2 node) { - this.player = player; - this.node = node; - } - - @Override - public Object call() { - try { -// player.simulateBlock(node); - } catch (Exception ex) { - logger.log(Level.SEVERE, null, ex); - } - return null; - } -} diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java index 48e494ddbf..45eb92cb77 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java @@ -223,7 +223,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { sim.getStack().push(new StackAbility(ability, playerId)); ability.activate(sim, false); sim.applyEffects(); - SimulationNode2 newNode = new SimulationNode2(sim, depth, playerId); + SimulationNode2 newNode = new SimulationNode2(parent, sim, depth, playerId); logger.fine("simulating -- node #:" + SimulationNode2.getCount() + " triggered ability option"); for (Target target: ability.getTargets()) { for (UUID targetId: target.getTargets()) { diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulationNode2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulationNode2.java index 7e86c59ce5..6ac1fc3f09 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulationNode2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulationNode2.java @@ -50,12 +50,14 @@ public class SimulationNode2 implements Serializable { protected List abilities; protected int depth; protected List children = new ArrayList(); + protected SimulationNode2 parent; protected List targets = new ArrayList(); protected List choices = new ArrayList(); protected UUID playerId; protected Combat combat; - public SimulationNode2(Game game, int depth, UUID playerId) { + public SimulationNode2(SimulationNode2 parent, Game game, int depth, UUID playerId) { + this.parent = parent; this.game = game; this.depth = depth; this.playerId = playerId; @@ -63,13 +65,13 @@ public class SimulationNode2 implements Serializable { nodeCount++; } - public SimulationNode2(Game game, List abilities, int depth, UUID playerId) { - this(game, depth, playerId); + public SimulationNode2(SimulationNode2 parent, Game game, List abilities, int depth, UUID playerId) { + this(parent, game, depth, playerId); this.abilities = abilities; } - public SimulationNode2(Game game, Ability ability, int depth, UUID playerId) { - this(game, depth, playerId); + public SimulationNode2(SimulationNode2 parent, Game game, Ability ability, int depth, UUID playerId) { + this(parent, game, depth, playerId); this.abilities = new ArrayList(); abilities.add(ability); } @@ -98,6 +100,10 @@ public class SimulationNode2 implements Serializable { return this.abilities; } + public SimulationNode2 getParent() { + return this.parent; + } + public List getChildren() { return this.children; } diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index f9237e902a..850465316f 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -225,6 +225,7 @@ public class ComputerPlayer> extends PlayerImpl i return true; } } + return false; } if (target instanceof TargetDiscard) { findPlayables(game); @@ -242,6 +243,7 @@ public class ComputerPlayer> extends PlayerImpl i return true; } } + return false; } if (target instanceof TargetControlledPermanent) { List targets; @@ -269,6 +271,7 @@ public class ComputerPlayer> extends PlayerImpl i return true; } } + return false; } if (target instanceof TargetCreatureOrPlayer) { List targets; @@ -297,8 +300,9 @@ public class ComputerPlayer> extends PlayerImpl i return true; } } + return false; } - return false; + throw new IllegalStateException("Target wasn't handled. class:" + target.getClass().toString()); } @Override diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar index a2e07914e77f0764fa0e07f14b0f4551b50afb93..1b61670148068af13d39abc970d6128e48632760 100644 GIT binary patch delta 22752 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 N_E2jR82H!C{s$|YW)T1Y delta 44572 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 diff --git a/Mage.Tests/plugins/AIMinimax.properties b/Mage.Tests/plugins/AIMinimax.properties index 96b5480294..0dbf3860df 100644 --- a/Mage.Tests/plugins/AIMinimax.properties +++ b/Mage.Tests/plugins/AIMinimax.properties @@ -1,4 +1,4 @@ -maxDepth=10 +maxDepth=20 maxNodes=5000 evaluatorLifeFactor=2 evaluatorPermanentFactor=1 diff --git a/Mage.Tests/plugins/mage-player-ai-ma.jar b/Mage.Tests/plugins/mage-player-ai-ma.jar index a2e07914e77f0764fa0e07f14b0f4551b50afb93..1b61670148068af13d39abc970d6128e48632760 100644 GIT binary patch delta 22752 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 N_E2jR82H!C{s$|YW)T1Y delta 44572 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 diff --git a/Mage.Tests/plugins/mage-player-aiminimax.jar b/Mage.Tests/plugins/mage-player-aiminimax.jar index 9ddd1b6941452680005da8bf40952187cebd13ec..bcc39cedd2ac6304de0f52561ce5640cb578a6d1 100644 GIT binary patch delta 32581 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 implements Game, Serializa //20091005 - 103.3 for (UUID playerId: state.getPlayerList(startingPlayerId)) { Player player = getPlayer(playerId); - player.setLife(this.getLife(), this); + if (!testMode || player.getLife() == 0) { + player.setLife(this.getLife(), this); + } if (!testMode) { player.drawCards(7, this); } @@ -949,6 +951,22 @@ public abstract class GameImpl> implements Game, Serializa gameCards.remove(card); } player.getLibrary().clear(); + } + break; + case OUTSIDE: + if (command.getValue().contains("life:")) { + String[] s = command.getValue().split(":"); + if (s.length == 2) { + try { + Integer amount = Integer.parseInt(s[1]); + player.setLife(amount, this); + logger.info("Setting player's life: "); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + } + + } break; }