Example #1
0
        public void BasicTest()
        {
            const string levelData = @"
##########
#-------.#
#-######-#
#------#-#
#------#-#
#---@--#-#
#------#-#
#------#-#
#--------#
##########";

            const string pathData = @"
##########
#-------*#
#-######*#
#------#*#
#------#*#
#---*--#*#
#---*--#*#
#---*--#*#
#---*****#
##########";
            var          level    = new LevelCreator().Create(levelData);
            var          aStar    = new AStarBuilder <Tuple <int, int> >().Neighbors(new TestNeighborsProvider(level)).Build();
            var          path     = aStar.Search(Tuple.Create(level.PlayerX, level.PlayerY), level.Targets.Single());

            Assert.NotNull(path);
            var result = Draw(level, path);

            Assert.AreEqual(pathData.Trim(), result);
        }
Example #2
0
        public void ShouldPreferHorizontalMovement()
        {
            const string levelData = @"
##########
#-------.#
#-######-#
#------#-#
#------#-#
#---@--#-#
#------#-#
#------#-#
#--------#
##########";

            const string pathData = @"
##########
#********#
#*######-#
#*-----#-#
#****--#-#
#---*--#-#
#------#-#
#------#-#
#--------#
##########";
            var          level    = new LevelCreator().Create(levelData);
            var          aStar    = new AStarBuilder <Tuple <int, int> >()
                                    .Distance((f, s) => f.Item1 != s.Item1 ? 1 : 1.1)
                                    .Neighbors(new TestNeighborsProvider(level))
                                    .Build();
            var path = aStar.Search(Tuple.Create(level.PlayerX, level.PlayerY), level.Targets.Single());

            Assert.NotNull(path);
            var result = Draw(level, path);

            Assert.AreEqual(pathData.Trim(), result);
        }