コード例 #1
0
        public void CanConvertEnumToString(CardinalPoints inital, string expected)
        {
            var converter = new CardinalPointEnumConverter();
            var actual    = converter.ToString(inital);

            Assert.Equal(expected, actual);
        }
コード例 #2
0
ファイル: Location.cs プロジェクト: jesusmunozr/DeliveryDrone
        public void NextStep(char step)
        {
            switch (step)
            {
            case 'A':
                if (Orientation == CardinalPoints.North)
                {
                    PosY += 1;
                }
                else if (Orientation == CardinalPoints.South)
                {
                    PosY -= 1;
                }
                else if (Orientation == CardinalPoints.East)
                {
                    PosX += 1;
                }
                else     // West
                {
                    PosX -= 1;
                }
                break;

            case 'I':
                Orientation = TurnLeft();
                break;

            case 'D':
                Orientation = TurnRight();
                break;

            default:
                throw new ArgumentException();
            }
        }
コード例 #3
0
        public void CanConvertStringToEnum(string inital, CardinalPoints expected)
        {
            var converter = new CardinalPointEnumConverter();
            var actual    = converter.ToEnum(inital);

            Assert.Equal(expected, actual);
        }
コード例 #4
0
        public Coordinates(int x, int y, CardinalPoints cardinalPoints)
        {
            string coordinate = x.ToString() + " " + y.ToString() + " " + cardinalPoint.ToString();

            if (Check.checkCoordinatesOfRobot(coordinate))
            {
                _x             = x;
                _y             = y;
                _cardinalPoint = cardinalPoints;
            }
        }
コード例 #5
0
        public void CanToStringReturnProperString(int initalX, int initalY, CardinalPoints initalHeading, string expected)
        {
            var position = new Position
            {
                X       = initalX,
                Y       = initalY,
                Heading = initalHeading
            };
            var actual = position.ToString();

            Assert.Equal(expected, actual);
        }
コード例 #6
0
        public Coordinates moveRobotFront(Coordinates robotPosition, CardinalPoints robotOrientation, Grid grid)
        {
            Coordinates robotNewPosition = null;

            switch (robotOrientation)
            {
            case CardinalPoints.N:
                // Console.WriteLine("North");
                if (!robotOutOfGrid(robotPosition, new Coordinates(robotPosition.x, robotPosition.y + 1, robotOrientation), grid))
                {
                    robotNewPosition = new Coordinates(robotPosition.x, robotPosition.y + 1, robotOrientation);
                }
                //robotNewPosition = (!robotOutOfGrid(robotNewPosition, grid)) ? robotNewPosition : new Coordinates(robotPosition.x, robotPosition.y, robotOrientation);
                // robotNewPosition = (!robotOutOfGrid(robotNewPosition, grid)) ? robotNewPosition : robotNewPosition;
                break;

            case CardinalPoints.S:
                // Console.WriteLine("South");
                if (!robotOutOfGrid(robotPosition, new Coordinates(robotPosition.x, robotPosition.y - 1, robotOrientation), grid))
                {
                    robotNewPosition = new Coordinates(robotPosition.x, robotPosition.y - 1, robotOrientation);
                }
                // robotNewPosition = (!robotOutOfGrid(robotNewPosition, grid)) ? robotNewPosition : new Coordinates(robotPosition.x, robotPosition.y, robotOrientation);
                // robotNewPosition = (!robotOutOfGrid(robotPosition, robotNewPosition, grid)) ? robotNewPosition : robotNewPosition;
                break;

            case CardinalPoints.E:
                // Console.WriteLine("East");
                if (!robotOutOfGrid(robotPosition, new Coordinates(robotPosition.x + 1, robotPosition.y, robotOrientation), grid))
                {
                    robotNewPosition = new Coordinates(robotPosition.x + 1, robotPosition.y, robotOrientation);
                }
                // robotNewPosition = (!robotOutOfGrid(robotNewPosition, grid)) ? robotNewPosition : new Coordinates(robotPosition.x, robotPosition.y, robotOrientation);
                // robotNewPosition = (!robotOutOfGrid(robotPosition, robotNewPosition, grid)) ? robotNewPosition : robotNewPosition;
                break;

            case CardinalPoints.W:
                // Console.WriteLine("West");
                if (!robotOutOfGrid(robotPosition, new Coordinates(robotPosition.x - 1, robotPosition.y, robotOrientation), grid))
                {
                    robotNewPosition = new Coordinates(robotPosition.x - 1, robotPosition.y, robotOrientation);
                }
                // robotNewPosition = (!robotOutOfGrid(robotNewPosition, grid)) ? robotNewPosition : new Coordinates(robotPosition.x, robotPosition.y, robotOrientation);
                // robotNewPosition = (!robotOutOfGrid(robotPosition, robotNewPosition, grid)) ? robotNewPosition : robotNewPosition;
                break;

            default:
                return(robotNewPosition);
            }
            return(robotNewPosition);
        }
コード例 #7
0
        public static string GetName(this CardinalPoints cardinalPoint)
        {
            var name = cardinalPoint switch
            {
                CardinalPoints.North => "Norte",
                CardinalPoints.South => "Sur",
                CardinalPoints.East => "Oriente",
                CardinalPoints.West => "Occidente",
                _ => throw new System.NotImplementedException()
            };

            return(name);
        }
    }
コード例 #8
0
        public void CanTurnRightProperly(CardinalPoints inital, CardinalPoints expected)
        {
            var command = new RoverTurnRightCommand();
            var rover   = new Rover
            {
                Position = new Position
                {
                    Heading = inital
                }
            };

            command.Run(rover);

            Assert.Equal(expected, rover.Position.Heading);
        }
コード例 #9
0
    void CalculateRotation()
    {
        //We can use the dot product to get a float number that says us in what direction is facing in relation to "forward vector"
        //Because we are not rotating the character model, the forward always will point to the same place (the depht of the screen, our "north").

        float productNS = Vector3.Dot(DirectionMov.normalized, transform.forward);
        float productWE = Vector3.Dot(DirectionMov.normalized, transform.right);

        if ((productNS > 0.5f) && (productWE < 0.5f) && (productWE > -0.5f))   //Is North?
        {
            RotationgFacing = CardinalPoints.N;
        }
        if ((productNS > 0.5f) && (productWE > 0.5f))   //Is North East?
        {
            RotationgFacing = CardinalPoints.NE;
        }
        if ((productNS <= 0.5f) && (productNS >= -0.5f) && (productWE > 0.5f))   //Is East?
        {
            RotationgFacing = CardinalPoints.E;
        }
        if ((productNS < -0.5f) && (productWE > 0.5f))   //Is South East?
        {
            RotationgFacing = CardinalPoints.SE;
        }
        if ((productNS < -0.5f) && (productWE < 0.5f) && (productWE > -0.5f))   //Is South?
        {
            RotationgFacing = CardinalPoints.S;
        }
        if ((productNS < -0.5f) && (productWE < 0.25f) && (productWE < -0.5f))   //Is South West?
        {
            RotationgFacing = CardinalPoints.SW;
        }
        if ((productNS <= 0.5f) && (productNS >= -0.5f) && (productWE < -0.5f))   //Is West?
        {
            RotationgFacing = CardinalPoints.W;
        }
        if ((productNS > 0.5f) && (productWE < -0.5f))   //Is North West?
        {
            RotationgFacing = CardinalPoints.NW;
        }

        anim.SetFloat("CardinalFacing", (float)RotationgFacing);
    }
コード例 #10
0
    void Reset()
    {
        RB              = GetComponent <Rigidbody>();
        Collider        = GetComponent <SphereCollider>();
        anim            = transform.GetChild(0).GetComponent <Animator>();
        RotationgFacing = CardinalPoints.E;

        SeekForce = 1.0f;
        if (RB)
        {
            RB.useGravity             = false;
            RB.drag                   = 1.0f;
            RB.collisionDetectionMode = CollisionDetectionMode.Continuous;
            RB.freezeRotation         = true;
        }

        mask  = 1 << 8;
        curve = AnimationCurve.Linear(0, 0, 1, 1);
    }
コード例 #11
0
 public string ToString(CardinalPoints p)
 {
     return(_cardinalPoint2StringDict[p]);
 }
コード例 #12
0
ファイル: Location.cs プロジェクト: jesusmunozr/DeliveryDrone
 private Location(int x, int y, CardinalPoints c)
 {
     PosX        = x;
     PosY        = y;
     Orientation = c;
 }
コード例 #13
0
ファイル: Location.cs プロジェクト: jesusmunozr/DeliveryDrone
 public Location()
 {
     PosX        = 0;
     PosY        = 0;
     Orientation = CardinalPoints.North;
 }
コード例 #14
0
        public void CanMoveForwardMoveProperly(int initalX, int initalY, int expectedX, int expectedY, CardinalPoints heading)
        {
            var command  = new RoverMoveForwardCommand();
            var position = new Position
            {
                X       = initalX,
                Y       = initalY,
                Heading = heading
            };
            var rover = new Rover
            {
                Position = position
            };

            command.Run(rover);

            Assert.Equal(heading, rover.Position.Heading);
            Assert.Equal(expectedX, rover.Position.X);
            Assert.Equal(expectedY, rover.Position.Y);
        }
コード例 #15
0
        public void MoveNext_StepWithDifferentOrientations_ShouldUpdateLocation(string steps, int expectedX, int expectedY, CardinalPoints expectedOrientation)
        {
            // Arrange
            var currentLocation = new Location();

            // Act
            foreach (var step in steps)
            {
                currentLocation.NextStep(step);
            }

            //Assert
            Assert.Equal(expectedX, currentLocation.PosX);
            Assert.Equal(expectedY, currentLocation.PosY);
            Assert.Equal(expectedOrientation, currentLocation.Orientation);
        }