public void CanConvertEnumToString(CardinalPoints inital, string expected) { var converter = new CardinalPointEnumConverter(); var actual = converter.ToString(inital); Assert.Equal(expected, actual); }
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(); } }
public void CanConvertStringToEnum(string inital, CardinalPoints expected) { var converter = new CardinalPointEnumConverter(); var actual = converter.ToEnum(inital); Assert.Equal(expected, actual); }
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; } }
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); }
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); }
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); } }
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); }
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); }
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); }
public string ToString(CardinalPoints p) { return(_cardinalPoint2StringDict[p]); }
private Location(int x, int y, CardinalPoints c) { PosX = x; PosY = y; Orientation = c; }
public Location() { PosX = 0; PosY = 0; Orientation = CardinalPoints.North; }
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); }
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); }