public MapCoordinate GetClosestPlayerWithPowerUp(MapCoordinate myCoord, CharacterInfo self, CharacterInfo[] playerInfos) { var distanceToClosestPlayerWithPowerUp = 999; var prevDistancePlayerPow = 999; var closestPlayerWithPowerUp = new MapCoordinate(999, 999); foreach (var info in playerInfos) { if (info.Id == self.Id) { continue; } if (info.CarryingPowerUp) { distanceToClosestPlayerWithPowerUp = myCoord.GetManhattanDistanceTo(_mapUtils.GetCoordinateFrom(info.Position)); if (distanceToClosestPlayerWithPowerUp < prevDistancePlayerPow) { prevDistancePlayerPow = distanceToClosestPlayerWithPowerUp; closestPlayerWithPowerUp = _mapUtils.GetCoordinateFrom(info.Position); } } } return(closestPlayerWithPowerUp); }
public void GetManhattanDistanceTo_ShouldReturnZero_WhenCalledWithTheSameCoordinate() { var sutX = _fixture.Create <int>(); var sutY = _fixture.Create <int>(); var sut = new MapCoordinate(sutX, sutY); var result = sut.GetManhattanDistanceTo(sut); Assert.Equal(0, result); }
public void GetManhattanDistanceTo_ShouldReturnCorrectDistance_WhenCalledWithValidCoordinate() { var sutX = _fixture.Create <int>(); var sutY = _fixture.Create <int>(); var sut = new MapCoordinate(sutX, sutY); var otherX = _fixture.Create <int>(); var otherY = _fixture.Create <int>(); var otherCoordinate = new MapCoordinate(otherX, otherY); var result = sut.GetManhattanDistanceTo(otherCoordinate); var expected = Math.Abs(sutX - otherX) + Math.Abs(sutY - otherY); Assert.Equal(expected, result); }
public MapCoordinate GetClosestPit(MapCoordinate myCoord, MapCoordinate[] pits) { var ClosestPit = new MapCoordinate(999, 999); var distanceToClosestPit = 9999; if (pits.Length != 0) { var prevDistancePow = 9999; foreach (var pit in pits) { distanceToClosestPit = myCoord.GetManhattanDistanceTo(pit); if (distanceToClosestPit < prevDistancePow) { prevDistancePow = distanceToClosestPit; ClosestPit = pit; } } } return(ClosestPit); }
public void Neighbors_of_a_distance_returns_all_neighbours_that_has_that_manhattan_distance_from_the_coordinate(int distance) { var start = new MapCoordinate(40, 65); var neighbours = start.NeighboursOfDistance(distance).ToList(); for (var x = 0; x < 100; x++) { for (var y = 0; y < 100; y++) { var mapCoordinate = new MapCoordinate(x, y); if (mapCoordinate.GetManhattanDistanceTo(start) == distance) { Assert.Contains(mapCoordinate, neighbours); } else { Assert.DoesNotContain(mapCoordinate, neighbours); } } } }
public MapCoordinate getClosestPowerUp(MapCoordinate myCoord) { var powerUpCoordinates = _mapUtils.GetPowerUpCoordinates(); var prevDistancePow = 9999; var closestPowerUp = new MapCoordinate(999, 999); var distanceToClosestPowerUp = 9999; if (powerUpCoordinates.Length != 0) { prevDistancePow = 9999; foreach (var PowerUpCord in powerUpCoordinates) { distanceToClosestPowerUp = myCoord.GetManhattanDistanceTo(PowerUpCord); if (distanceToClosestPowerUp < prevDistancePow) { prevDistancePow = distanceToClosestPowerUp; closestPowerUp = PowerUpCord; } } } return(closestPowerUp); }