Exemple #1
0
        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);
        }
Exemple #4
0
        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);
                    }
                }
            }
        }
Exemple #6
0
        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);
        }