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);
        }
 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;
 }