Esempio n. 1
0
            public Command GetMove()
            {
                var dirs = valuer.Target.position.GetAllDirectionsTo(ship.position);

                dirs = dirs.OrderBy(d => GameInfo.CellAt(ship.position.DirectionalOffset(d)).halite).ToList();
                if (dirs.Count == 1 && GameInfo.Distance(ship, valuer.Target.position) > 1)
                {
                    var extraDirs = DirectionExtensions.GetLeftRightDirections(dirs[0]);
                    dirs.AddRange(extraDirs);
                }
                foreach (var d in dirs)
                {
                    var cell = GameInfo.CellAt(ship, d);
                    if (Safety.IsSafeAndAvoids2Cells(ship, d) && Navigation.IsAccessible(cell.position, valuer.Target.position))
                    {
                        return(ship.Move(d, $"moving towards best projection {valuer.Target.position.ToString()}... Expected turns: {numTurns}"));
                    }
                }
                return(null);
            }