예제 #1
0
 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;
 }
예제 #2
0
        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);
        }