// TODO goals are not prioritized (first in is highest priority) public bool AddGoal(AgentGoal goal) { goals.Add(goal); return(true); }
/// <summary> /// Levels are hardcoded into here /// </summary> /// <param name="level"></param> private void SetupLevel(int level) { int numTimePeriods; int numAgents; int startingAgentHealth; switch (activeLevel) { case 0: numTimePeriods = 5; numAgents = 3; startingAgentHealth = 4; // Agents gameState = new GameState(numTimePeriods, TIME_WINDOW_MIN, TIME_WINDOW_MAX, gameResources); gameState.AddAgent(new TrustAgent("Trustworthy Tim", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new BetrayAgent("Betrayal Bill", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new TitForTatAgent("TitForTat Tom", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); // Goals gameState.AddGoal(new AgentGoal(gameState.GetAgentByID(0), AgentCondition.ALIVE, numTimePeriods - 1)); gameState.ForwardPropogate(0); break; case 1: numTimePeriods = 7; numAgents = 5; startingAgentHealth = 4; gameState = new GameState(numTimePeriods, TIME_WINDOW_MIN, TIME_WINDOW_MAX, gameResources); gameState.AddAgent(new TrustAgent("Mr. Trustables", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new BetrayAgent("Backstab Barry", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new TitForTatAgent("Titmouse Fortat", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new TitForTatAgent("Tat For Tit", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new BullyAgent("Foobar'n Baz", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddGoal(new AgentGoal(gameState.GetAgentByID(0), AgentCondition.ALIVE, 0)); gameState.AddGoal(new AgentGoal(gameState.GetAgentByID(0), AgentCondition.ALIVE, 1)); gameState.AddGoal(new AgentGoal(gameState.GetAgentByID(4), AgentCondition.DEAD, numTimePeriods - 1)); gameState.ForwardPropogate(0); break; case 2: numTimePeriods = 9; numAgents = 6; startingAgentHealth = 5; gameState = new GameState(numTimePeriods, TIME_WINDOW_MIN, TIME_WINDOW_MAX + 1, gameResources); gameState.AddAgent(new BullyAgent("The Dragon", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new TrustAgent("Princess", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new MemoryAgent("A Bystander", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); gameState.AddAgent(new MemoryAgent("Bystander B", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID())); AgentGoal newGoal = new AgentGoal(gameState.GetAgentByID(0), AgentCondition.DEAD, numTimePeriods / 2); // kill the bully by halfway gameState.AddAgent(new SimpleGoalAgent("Angry Knight", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID(), newGoal)); AgentGoal newGoal2 = new AgentGoal(gameState.GetAgentByID(0), AgentCondition.DEAD, numTimePeriods - 1); // kill the bully by halfway gameState.AddAgent(new SimpleGoalAgent("Level-Headed Knight", numTimePeriods, numAgents, startingAgentHealth, gameState.GetNextAgentID(), newGoal2)); gameState.AddGoal(new AgentGoal(gameState.GetAgentByID(0), AgentCondition.DEAD, numTimePeriods - 1)); // kill the bully by the end gameState.AddGoal(new AgentGoal(gameState.GetAgentByID(1), AgentCondition.ALIVE, numTimePeriods - 1)); // kill the bully by the end gameState.ForwardPropogate(0); break; default: break; } }
public SimpleGoalAgent(string name, int numTimePeriods, int numAgents, int health, int agentID, AgentGoal goal) : base(name, numTimePeriods, numAgents, health, agentID) { this.Goal = goal; }