mirror of
https://github.com/correl/mage.git
synced 2024-12-24 03:00:14 +00:00
Minor changes to AI logging.
This commit is contained in:
parent
0cf25a5c8e
commit
27d441de0a
3 changed files with 41 additions and 19 deletions
|
@ -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<Ability>(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!");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -43,8 +43,8 @@ import mage.game.permanent.Permanent;
|
|||
public class PermanentEvaluator {
|
||||
|
||||
//preserve calculations for efficiency
|
||||
private Map<UUID, Integer> values = new HashMap<UUID, Integer>();
|
||||
private CombatEvaluator combat = new CombatEvaluator();
|
||||
private final Map<UUID, Integer> values = new HashMap<>();
|
||||
private final CombatEvaluator combat = new CombatEvaluator();
|
||||
|
||||
public int evaluate(Permanent permanent, Game game) {
|
||||
if (!values.containsKey(permanent.getId())) {
|
||||
|
|
Loading…
Reference in a new issue