Exemple #1
0
        public void TestAscent()
        {
            GameState gameState = TestGameState(7, 5);
            DistanceField <GameState.Tile> dut = new DistanceField <GameState.Tile>(gameState, gameState.map, tile => tile.isFood);

            const Tile f = Tile.Food;
            const Tile _ = Tile.Land;
            const Tile w = Tile.Water;

            Tile[,] map = new Tile[, ]
            {
                { _, w, _, w, _, w, _ },
                { _, w, _, w, _, w, _ },
                { _, w, f, w, _, _, _ },
                { _, _, w, w, w, w, _ },
                { _, w, _, _, _, w, _ }
            };

            gameState.Set(map);
            dut.Propagate();

            {
                Vector2i r = dut.GetAscent(6, 4).First();
                Assert.AreEqual(1, r.x);
                Assert.AreEqual(0, r.y);
            }


            {
                Vector2i r = dut.GetAscent(5, 2).First();
                Assert.AreEqual(1, r.x);
                Assert.AreEqual(0, r.y);
            }

            {
                Vector2i r = dut.GetAscent(4, 2).First();
                Assert.AreEqual(1, r.x);
                Assert.AreEqual(0, r.y);
            }

            {
                Vector2i r = dut.GetAscent(2, 1).First();
                Assert.AreEqual(0, r.x);
                Assert.AreEqual(-1, r.y);
            }
        }
        public void TestAscent()
        {
            DistanceField dut = new DistanceField(7, 5, Tile.Food);

            const Tile f = Tile.Food;
            const Tile _ = Tile.Land;
            const Tile w = Tile.Water;

            Tile[,] map = new Tile[, ]
            {
                { _, w, _, w, _, w, _ },
                { _, w, _, w, _, w, _ },
                { _, w, f, w, _, _, _ },
                { _, _, w, w, w, w, _ },
                { _, w, _, _, _, w, _ }
            };

            dut.Propagate(map, 20);

            {
                Vector2i r = dut.GetAscent(6, 4).First();
                Assert.AreEqual(1, r.x);
                Assert.AreEqual(0, r.y);
            }


            {
                Vector2i r = dut.GetAscent(5, 2).First();
                Assert.AreEqual(1, r.x);
                Assert.AreEqual(0, r.y);
            }

            {
                Vector2i r = dut.GetAscent(4, 2).First();
                Assert.AreEqual(1, r.x);
                Assert.AreEqual(0, r.y);
            }

            {
                Vector2i r = dut.GetAscent(2, 1).First();
                Assert.AreEqual(0, r.x);
                Assert.AreEqual(-1, r.y);
            }
        }