Example #1
0
        private void MoveShip(ECardinalDirection direction)
        {
            Map.BlockCell(MyShip.Position);

            var moveCommand = new MoveCommand(direction)
            {
                Torpedo = MyShip.Torpedo.Cooldown > 0,
            };

            Commands.Add(moveCommand);
        }
Example #2
0
        private ECardinalDirection GetAvailableDirections()
        {
            ECardinalDirection availableDirections = ECardinalDirection.None;

            // Check WEST
            if (MyShip.Position.X != 0 &&
                Map.IsEmptyCell(MyShip.Position.X - 1, MyShip.Position.Y) &&
                Map.GetCellEmptyNeighborhood(MyShip.Position.X - 1, MyShip.Position.Y).Count > 0)    // First row
            {
                availableDirections |= ECardinalDirection.W;
            }

            // Check EAST
            if (MyShip.Position.X != 14 &&
                Map.IsEmptyCell(MyShip.Position.X + 1, MyShip.Position.Y) &&
                Map.GetCellEmptyNeighborhood(MyShip.Position.X + 1, MyShip.Position.Y).Count > 0)    // last row
            {
                availableDirections |= ECardinalDirection.E;
            }

            // Check NORTH
            if (MyShip.Position.Y != 0 &&
                Map.IsEmptyCell(MyShip.Position.X, MyShip.Position.Y - 1) &&
                Map.GetCellEmptyNeighborhood(MyShip.Position.X, MyShip.Position.Y - 1).Count > 0)    // first column
            {
                availableDirections |= ECardinalDirection.N;
            }

            // Check SOUTH
            if (MyShip.Position.Y != 14 &&
                Map.IsEmptyCell(MyShip.Position.X, MyShip.Position.Y + 1) &&
                Map.GetCellEmptyNeighborhood(MyShip.Position.X, MyShip.Position.Y + 1).Count > 0)    // last column
            {
                availableDirections |= ECardinalDirection.S;
            }

            return(availableDirections);
        }
Example #3
0
 public MoveCommand(ECardinalDirection directon)
 {
     Direction = directon;
 }