From 60b6fe5a793690c432065cf5cc6f1caa4a2890d1 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Tue, 15 Nov 2011 19:43:37 +0400 Subject: [PATCH] Changes in testing framework. Added support for fixed targets. Added test to damage itself by Lightning Bolt. Ignored some old tests. --- .../src/mage/player/ai/ComputerPlayer6.java | 30 ++++++-- .../src/mage/player/ai/ComputerPlayer7.java | 14 ++-- .../src/mage/player/ai/SimulatedPlayer2.java | 65 ++++++++++++++++-- Mage.Tests/plugins/mage-player-ai-ma.jar | Bin 44010 -> 45028 bytes .../test/cards/damage/LightningBoltTest.java | 19 +++++ .../mage/test/serverside/PlayGameTest.java | 4 +- .../test/serverside/ai/BugTapsItselfTest.java | 2 + .../test/serverside/base/CardTestBase.java | 8 +-- .../serverside/base/impl/CardTestAPIImpl.java | 4 +- .../effects/BoostContinuousEffectTest.java | 2 + .../cards/single/mbs/BurntheImpureTest.java | 2 + Mage/src/mage/players/Player.java | 1 + Mage/src/mage/players/PlayerImpl.java | 4 ++ 13 files changed, 132 insertions(+), 23 deletions(-) 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 bd4ed6b33f..d94fc14445 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 @@ -52,10 +52,8 @@ import mage.game.stack.StackAbility; import mage.game.stack.StackObject; import mage.game.turn.*; import mage.players.Player; -import mage.sets.alarareborn.OfferingToAsha; import mage.target.Target; import mage.target.TargetCard; -import sun.rmi.transport.ObjectTable; import java.io.File; import java.util.*; @@ -86,7 +84,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements public ComputerPlayer6(String name, RangeOfInfluence range, int skill) { super(name, range); maxDepth = skill * 2; - maxThink = skill * 3; + maxThink = skill * 300; maxNodes = Config2.maxNodes; getSuggestedActions(); } @@ -196,14 +194,21 @@ public class ComputerPlayer6 extends ComputerPlayer implements while (actions.peek() != null) { Ability ability = actions.poll(); System.out.println("[" + game.getPlayer(playerId).getName() + "] Action: " + ability.toString()); + if (ability.getTargets().size() > 0) { + Player player = game.getPlayer(ability.getFirstTarget()); + if (player != null) { + System.out.println("targets = " + player.getName()); + } + } this.activateAbility((ActivatedAbility) ability, game); if (ability.isUsesStack()) usedStack = true; - if (!suggested.isEmpty()) { + if (!suggested.isEmpty() && !(ability instanceof PassAbility)) { Iterator it = suggested.iterator(); while (it.hasNext()) { Card card = game.getCard(ability.getSourceId()); String action = it.next(); + System.out.println("action="+action+";card="+card); if (action.equals(card.getName())) { System.out.println("removed from suggested="+action); it.remove(); @@ -484,6 +489,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements logger.debug("simulating -- node #:" + SimulationNode2.getCount() + " actions:" + action); sim.checkStateAndTriggered(); int val = addActions(newNode, depth-1, alpha, beta); + logger.debug("val = " + val); if (!currentPlayer.getId().equals(playerId)) { if (val < beta) { beta = val; @@ -523,7 +529,7 @@ public class ComputerPlayer6 extends ComputerPlayer implements } } if (alpha >= beta) { - //logger.info("simulating -- pruning"); + logger.info("simulating -- pruning"); break; } if (SimulationNode2.nodeCount > maxNodes) { @@ -538,11 +544,21 @@ public class ComputerPlayer6 extends ComputerPlayer implements node.setScore(bestNode.getScore()); } if (!currentPlayer.getId().equals(playerId)) { - //logger.info("returning priority beta: " + beta); + /*if (beta == Integer.MAX_VALUE) { + int val = GameStateEvaluator2.evaluate(playerId, game); + logger.info("returning priority beta: " + val); + return val; + }*/ + logger.info("returning priority beta: " + beta); return beta; } else { - //logger.info("returning priority alpha: " + alpha); + /*if (alpha == Integer.MIN_VALUE) { + int val = GameStateEvaluator2.evaluate(playerId, game); + logger.info("returning priority beta: " + val); + return val; + }*/ + logger.info("returning priority alpha: " + alpha); return alpha; } } 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 8d44881aca..24a88b97c4 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 @@ -56,6 +56,8 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { private static FilterAbility filterLand = new FilterAbility(); private static FilterAbility filterNotLand = new FilterAbility(); + private boolean allowBadMoves; + static { filterLand.getTypes().add(AbilityType.PLAY_LAND); filterLand.setZone(Zone.HAND); @@ -155,7 +157,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { if (root.children.size() > 0) { root = root.children.get(0); int bestScore = root.getScore(); - if (bestScore > currentScore) { + if (bestScore > currentScore || allowBadMoves) { actions = new LinkedList(root.abilities); combat = root.combat; } @@ -175,7 +177,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { if (root.children.size() > 0) { root = root.children.get(0); int bestScore = root.getScore(); - if (bestScore > currentScore) { + if (bestScore > currentScore || allowBadMoves) { actions = new LinkedList(root.abilities); combat = root.combat; } @@ -222,8 +224,8 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { if (game.getActivePlayerId().equals(playerId)) { if (testScore < currentScore) { // if score at end of step is worse than original score don't check further - logger.debug("simulating -- abandoning check, no immediate benefit"); - val = testScore; + //logger.debug("simulating -- abandoning check, no immediate benefit"); + val = testScore; } else { switch (game.getTurn().getStepType()) { @@ -541,4 +543,8 @@ public class ComputerPlayer7 extends ComputerPlayer6 implements Player { } } + @Override + public void setAllowBadMoves(boolean allowBadMoves) { + this.allowBadMoves = allowBadMoves; + } } 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 cefc7288dc..1471a3f3cb 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 @@ -28,8 +28,6 @@ package mage.player.ai; -import java.util.*; -import java.util.concurrent.ConcurrentLinkedQueue; import mage.abilities.Ability; import mage.abilities.TriggeredAbility; import mage.abilities.common.PassAbility; @@ -44,9 +42,13 @@ import mage.game.combat.Combat; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.game.stack.StackAbility; +import mage.players.Player; import mage.target.Target; import org.apache.log4j.Logger; +import java.util.*; +import java.util.concurrent.ConcurrentLinkedQueue; + /** * * @author BetaSteward_at_googlemail.com @@ -56,6 +58,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { private final static transient Logger logger = Logger.getLogger(SimulatedPlayer2.class); private boolean isSimulatedPlayer; private transient ConcurrentLinkedQueue allActions; + private boolean forced; private static PassAbility pass = new PassAbility(); private List suggested; @@ -81,19 +84,35 @@ public class SimulatedPlayer2 extends ComputerPlayer { allActions = new ConcurrentLinkedQueue(); Game sim = game.copy(); - simulateOptions(sim, pass); + forced = false; + simulateOptions(sim); ArrayList list = new ArrayList(allActions); Collections.reverse(list); + + if (!forced) { + list.add(pass); + } + + for (Ability a : allActions) { + System.out.println("ability=="+a); + if (a.getTargets().size() > 0) { + Player player = game.getPlayer(a.getFirstTarget()); + if (player != null) { + System.out.println(" target="+player.getName()); + } + } + } + return list; } - protected void simulateOptions(Game game, Ability previousActions) { - allActions.add(previousActions); + protected void simulateOptions(Game game) { List playables = game.getPlayer(playerId).getPlayable(game, isSimulatedPlayer); playables = filterAbilities(game, playables, suggested); for (Ability ability: playables) { List options = game.getPlayer(playerId).getPlayableOptions(ability, game); + options = filterOptions(game, options, ability, suggested); if (options.isEmpty()) { if (ability.getManaCosts().getVariableCosts().size() > 0) { simulateVariableCosts(ability, game); @@ -145,6 +164,7 @@ public class SimulatedPlayer2 extends ComputerPlayer { for (String s : suggested) { if (s.equals(card.getName())) { System.out.println("matched: " + s); + forced = true; filtered.add(ability); } } @@ -155,6 +175,41 @@ public class SimulatedPlayer2 extends ComputerPlayer { return playables; } + protected List filterOptions(Game game, List options, Ability ability, List suggested) { + if (options.isEmpty()) { + return options; + } + if (suggested == null || suggested.isEmpty()) { + return options; + } + List filtered = new ArrayList(); + for (Ability option : options) { + if (option.getTargets().size() > 0 && option.getTargets().get(0).getMaxNumberOfTargets() == 1) { + Card card = game.getCard(ability.getSourceId()); + for (String s : suggested) { + String[] groups = s.split(";"); + System.out.println("s="+s+";groups="+groups.length); + if (groups.length == 2) { + if (groups[0].equals(card.getName()) && groups[1].startsWith("name=")) { + // extract target and compare to suggested + String name = groups[1].split("=")[1]; + Player player = game.getPlayer(option.getFirstTarget()); + if (player != null && name.equals(player.getName())) { + System.out.println("matched(option): " + s); + filtered.add(option); + return filtered; + } else { + System.out.println("not equal UUID for target, player=" + player); + } + } + } + } + } + } + // no option was found + return options; + } + //add a generic mana cost for each amount possible protected void simulateVariableCosts(Ability ability, Game game) { int numAvailable = getAvailableManaProducers(game).size(); diff --git a/Mage.Tests/plugins/mage-player-ai-ma.jar b/Mage.Tests/plugins/mage-player-ai-ma.jar index fe1582fc604916712bad819620cf2009ecb591da..a9a577611632fb5931d1272ff4cc4b0b60d4a1de 100644 GIT binary patch delta 30504 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 X{@dr@>QR*b2RKwo2z6EZ@1Oqz6WML5 delta 29369 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

ydH(Y-;dxt_$)TyH2ZD^)g^gFL*7 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 L5}3z=e=+|bv}K5h diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/damage/LightningBoltTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/damage/LightningBoltTest.java index 08cfcce624..6ff51d7933 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/damage/LightningBoltTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/damage/LightningBoltTest.java @@ -11,14 +11,33 @@ public class LightningBoltTest extends CardTestBase { @Test public void testDamageOpponent() { + System.out.println("TEST: testDamageOpponent"); addCard(Constants.Zone.HAND, playerA, "Mountain"); addCard(Constants.Zone.HAND, playerA, "Lightning Bolt"); playLand(playerA, "Mountain"); castSpell(playerA, "Lightning Bolt"); + // not specifying target, AI should choose opponent by itself execute(); assertLife(playerA, 20); assertLife(playerB, 17); } + + @Test + public void testDamageSelf() { + System.out.println("TEST: testDamageSelf"); + addCard(Constants.Zone.HAND, playerA, "Mountain"); + addCard(Constants.Zone.HAND, playerA, "Lightning Bolt"); + + playLand(playerA, "Mountain"); + castSpell(playerA, "Lightning Bolt"); + addFixedTarget(playerA, "Lightning Bolt", playerA); + playerA.setAllowBadMoves(true); + + execute(); + assertLife(playerA, 17); + assertLife(playerB, 20); + } + } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java index d78b5b2f1a..97c0d11481 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java @@ -11,6 +11,7 @@ import mage.game.TwoPlayerDuel; import mage.player.ai.ComputerPlayer; import mage.players.Player; import mage.sets.Sets; +import org.junit.Ignore; import org.junit.Test; import org.mage.test.serverside.base.MageTestBase; @@ -27,7 +28,8 @@ public class PlayGameTest extends MageTestBase { private static List colorChoices = Arrays.asList("bu", "bg", "br", "bw", "ug", "ur", "uw", "gr", "gw", "rw", "bur", "buw", "bug", "brg", "brw", "bgw", "wur", "wug", "wrg", "rgu"); - @Test + @Ignore + @Test public void playOneGame() throws GameException, FileNotFoundException, IllegalArgumentException { Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ALL); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/ai/BugTapsItselfTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/ai/BugTapsItselfTest.java index 254c65bc1d..a56e171d8c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/ai/BugTapsItselfTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/ai/BugTapsItselfTest.java @@ -4,6 +4,7 @@ import junit.framework.Assert; import mage.Constants; import mage.game.permanent.Permanent; +import org.junit.Ignore; import org.junit.Test; import org.mage.test.serverside.base.CardTestBase; @@ -16,6 +17,7 @@ import org.mage.test.serverside.base.CardTestBase; public class BugTapsItselfTest extends CardTestBase { @Test + @Ignore public void testVersusInfectCreature() throws Exception { useWhiteDefault(); addCard(Constants.Zone.BATTLEFIELD, playerA, "Blinding Mage"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java index c320b17bd0..f175e128fb 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java @@ -66,8 +66,8 @@ public abstract class CardTestBase extends CardTestAPIImpl { Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ALL); playerA = aiTypeA.equals(CardTestBase.AIType.MinimaxHybrid) ? - createPlayer("ComputerA", "Computer - minimax hybrid") : - createPlayer("ComputerA", "Computer - mad"); + createPlayer("PlayerA", "Computer - minimax hybrid") : + createPlayer("PlayerA", "Computer - mad"); playerA.setTestMode(true); logger.info("Loading deck..."); Deck deck = Deck.load(Sets.loadDeck("RB Aggro.dck")); @@ -79,8 +79,8 @@ public abstract class CardTestBase extends CardTestAPIImpl { game.loadCards(deck.getCards(), playerA.getId()); playerB = aiTypeB.equals(CardTestBase.AIType.MinimaxHybrid) ? - createPlayer("ComputerB", "Computer - minimax hybrid") : - createPlayer("ComputerB", "Computer - mad"); + createPlayer("PlayerB", "Computer - minimax hybrid") : + createPlayer("PlayerB", "Computer - mad"); playerB.setTestMode(true); Deck deck2 = Deck.load(Sets.loadDeck("RB Aggro.dck")); if (deck2.getCards().size() < 40) { diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java index 5d96474342..0d6fec0c4c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java @@ -363,8 +363,8 @@ public abstract class CardTestAPIImpl extends MageTestBase implements CardTestAP player.addAction("cast:"+cardName); } - public void castSpell(Player player, String cardName, String target) { - player.addAction("cast:"+cardName + ";" + target); + public void addFixedTarget(Player player, String cardName, Player target) { + player.addAction("cast:"+cardName + ";name=" + target.getName()); } public void useAbility(Player player, String cardName) { diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java index 6de993cb53..2ca6b42743 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java @@ -1,6 +1,7 @@ package org.mage.test.serverside.cards.effects; import mage.filter.Filter; +import org.junit.Ignore; import org.junit.Test; import org.mage.test.serverside.base.CardTestBase; @@ -12,6 +13,7 @@ import org.mage.test.serverside.base.CardTestBase; public class BoostContinuousEffectTest extends CardTestBase { @Test + @Ignore public void testHonorOfThePoor() throws Exception { load("M11/Honor of the Pure.test"); execute(); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/cards/single/mbs/BurntheImpureTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/cards/single/mbs/BurntheImpureTest.java index f5ed083a64..12e76548d5 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/cards/single/mbs/BurntheImpureTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/cards/single/mbs/BurntheImpureTest.java @@ -2,6 +2,7 @@ package org.mage.test.serverside.cards.single.mbs; import mage.Constants; import mage.filter.Filter; +import org.junit.Ignore; import org.junit.Test; import org.mage.test.serverside.base.CardTestAPI; import org.mage.test.serverside.base.CardTestBase; @@ -24,6 +25,7 @@ public class BurntheImpureTest extends CardTestBase { * @throws Exception */ @Test + @Ignore public void testVersusInfectCreature() throws Exception { // $include red.default useRedDefault(); diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java index 2ce860c00b..c955601106 100644 --- a/Mage/src/mage/players/Player.java +++ b/Mage/src/mage/players/Player.java @@ -164,6 +164,7 @@ public interface Player extends MageItem, Copyable { public boolean isTestMode(); public void setTestMode(boolean value); public void addAction(String action); + public void setAllowBadMoves(boolean allowBadMoves); public void init(Game game); public void init(Game game, boolean testMode); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index a6afe4eeba..aa863fa2d7 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -1351,4 +1351,8 @@ public abstract class PlayerImpl> implements Player, Ser // do nothing } + public void setAllowBadMoves(boolean allowBadMoves) { + // do nothing + } + }