diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java index 92696ef0d9..8252532655 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java @@ -95,7 +95,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 { public boolean priority(Game game) { if (lastLoggedTurn != game.getTurnNum()) { lastLoggedTurn = game.getTurnNum(); - logger.info(new StringBuilder("------------------------ ").append("Turn: ").append(game.getTurnNum()).append(" [").append(game.getPlayer(game.getActivePlayerId()).getName()).append("----------------------------------------------------").toString()); + logger.info(new StringBuilder("============================== ").append("Turn: ").append(game.getTurnNum()).append(" [").append(game.getPlayer(game.getActivePlayerId()).getName()).append("] ====================================================").toString()); } logState(game); logger.debug("Priority -- Step: " + (game.getTurn().getStepType() + " ").substring(0,25) + " ActivePlayer-" + game.getPlayer(game.getActivePlayerId()).getName() + " PriorityPlayer-" + name); @@ -110,6 +110,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 { if (game.getActivePlayerId().equals(playerId)) { printOutState(game); if (actions.size() == 0) { + logger.info("Sim Calculate pre combat actions ----------------------------------------------------- "); calculatePreCombatActions(game); } act(game); @@ -126,6 +127,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 { if (!game.getActivePlayerId().equals(playerId)) { printOutState(game); if (actions.size() == 0) { + logger.info("Sim Calculate declare attackers actions ----------------------------------------------------- "); calculatePreCombatActions(game); } act(game); @@ -163,12 +165,11 @@ public class ComputerPlayer7 extends ComputerPlayer6 { return false; } - protected void calculatePreCombatActions(Game game) { + protected void calculatePreCombatActions(Game game) { if (!getNextAction(game)) { currentScore = GameStateEvaluator2.evaluate(playerId, game); Game sim = createSimulation(game); SimulationNode2.resetCount(); - logger.info("Sim Calculate pre combat actions -----------------------------------------------------------------------------------------"); root = new SimulationNode2(null, sim, maxDepth, playerId); addActionsTimed(); @@ -177,7 +178,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 { root = root.children.get(0); // int bestScore = root.getScore(); // if (bestScore > currentScore || allowBadMoves) { - actions = new LinkedList(root.abilities); + actions = new LinkedList<>(root.abilities); combat = root.combat; for (Ability ability : actions) { actionCache.add(ability.getRule() + "_" + ability.getSourceId()); @@ -185,6 +186,8 @@ public class ComputerPlayer7 extends ComputerPlayer6 { } else { logger.info("[" + game.getPlayer(playerId).getName() + "][pre] Action: skip"); } + } else { + logger.debug("Next Action exists!"); } } 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 cc801166fd..27a1abbd81 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 @@ -5,15 +5,11 @@ package mage.player.ai; +import java.util.UUID; import mage.game.Game; import mage.game.permanent.Permanent; import mage.player.ai.ma.ArtificialScoringSystem; import mage.players.Player; -import mage.util.Logging; - -import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; /** * @@ -25,10 +21,6 @@ import java.util.logging.Logger; public class GameStateEvaluator2 { private static final transient org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(GameStateEvaluator2.class); -// private static final transient Logger logger = Logging.getLogger(GameStateEvaluator2.class.getName()); -// static { -// logger.setLevel(Level.ALL); -// } public static final int WIN_GAME_SCORE = 100000000; public static final int LOSE_GAME_SCORE = -WIN_GAME_SCORE; @@ -62,23 +54,50 @@ public class GameStateEvaluator2 { } int permanentScore = 0; + int playerScore = 0; + int opponentScore = 0; try { + StringBuilder sbPlayer = new StringBuilder(); + StringBuilder sbOpponent = new StringBuilder(); + // add values of player for (Permanent permanent: game.getBattlefield().getAllActivePermanents(playerId)) { - permanentScore += evaluatePermanent(permanent, game); + int onePermScore = evaluatePermanent(permanent, game); + playerScore += onePermScore; + if (logger.isDebugEnabled()) { + sbPlayer.append(permanent.getName()).append("[").append(onePermScore).append("] "); + } } + if (logger.isDebugEnabled()) { + sbPlayer.insert(0, playerScore + " - "); + sbPlayer.insert(0, "Player..: "); + logger.debug(sbPlayer); + } + + // add values of opponent for (Permanent permanent: game.getBattlefield().getAllActivePermanents(opponent.getId())) { - permanentScore -= evaluatePermanent(permanent, game); + int onePermScore = evaluatePermanent(permanent, game); + opponentScore += onePermScore; + if (logger.isDebugEnabled()) { + sbOpponent.append(permanent.getName()).append("[").append(onePermScore).append("] "); + } } + if (logger.isDebugEnabled()) { + sbOpponent.insert(0, opponentScore + " - "); + sbOpponent.insert(0, "Opponent: "); + + logger.debug(sbOpponent); + } + permanentScore = playerScore - opponentScore; } catch (Throwable t) { } //permanentScore *= PERMANENT_FACTOR; - int handScore = 0; + int handScore; handScore = player.getHand().size() - opponent.getHand().size(); handScore *= 5; int score = lifeScore + permanentScore + handScore; - logger.debug("game state evaluated to- lifeScore:" + lifeScore + " permanentScore:" + permanentScore + " handScore:" + handScore + " total:" + score); + logger.debug(score + " total Score (life:" + lifeScore + " permanents:" + permanentScore + " hand:" + handScore +")"); return score; } diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/PermanentEvaluator.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/PermanentEvaluator.java index 016c1868f2..911276ab43 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/PermanentEvaluator.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/PermanentEvaluator.java @@ -43,8 +43,8 @@ import mage.game.permanent.Permanent; public class PermanentEvaluator { //preserve calculations for efficiency - private Map values = new HashMap(); - private CombatEvaluator combat = new CombatEvaluator(); + private final Map values = new HashMap<>(); + private final CombatEvaluator combat = new CombatEvaluator(); public int evaluate(Permanent permanent, Game game) { if (!values.containsKey(permanent.getId())) {