public AgentAlgorithmBase(Game game, Agent agent) { Game = game; TeamEnum = game.GetTeamFlag(agent); EnemyEnum = TeamEnum.GetEnemyTeam(); Team = game.GetTeam(TeamEnum); Enemy = game.GetTeam(EnemyEnum); Agent = agent; }
protected internal virtual void GameStarted(Game game, Teams team) { Game = game; TeamEnum = team; Team = game.GetTeam(team); EnemyEnum = (Teams.Team1 | Teams.Team2) & ~team; Enemy = game.GetTeam(EnemyEnum); }
protected List <Point> CalculateProhibitedPoints(Agent agent) { List <Point> prohibited = new List <Point>(); //エージェントの周りのセルにいるエージェントの情報を取得 Agent anoAgent = Game.GetTeam(agent).GetAnotherAgent(agent); Team anoTeam = Game.GetTeam(Game.GetTeamFlag(agent).GetEnemyTeam()); Point p = agent.Position - anoAgent.Position; if (Math.Abs(p.X) <= 1 && Math.Abs(p.Y) <= 1) { prohibited.Add(anoAgent.Position); } p = agent.Position - anoTeam.Agent1.Position; if (Math.Abs(p.X) <= 1 && Math.Abs(p.Y) <= 1) { prohibited.Add(anoTeam.Agent1.Position); } p = agent.Position - anoTeam.Agent2.Position; if (Math.Abs(p.X) <= 1 && Math.Abs(p.Y) <= 1) { prohibited.Add(anoTeam.Agent2.Position); } return(prohibited); }