Ejemplo n.º 1
0
        public void TestJumpRecursive()
        {
            // . f .
            // . X j
            // . . .
            // p . g

            // p   : (0, 3)
            // g   : (2, 3)
            // dir : NORTHEAST
            // j   : (2, 1)

            JPS jps = new JPS(new bool[5, 4] {
                { false, false, false, false },
                { false, true, false, false },
                { false, false, false, false },
                { false, false, false, false },
                { false, false, false, false },
            });

            Int2      p   = new Int2(0, 3);
            Int2      g   = new Int2(2, 3);
            EDirFlags dir = EDirFlags.NORTHEAST;

            Int2 result = new Int2(0, 0);

            Assert.True(jps.TryJump(p, dir, g, ref result));
            Assert.Equal(new Int2(2, 1), result);
        }
Ejemplo n.º 2
0
        public void TESTSuccesorsDir()
        {
            JPS jps = new JPS(new bool[5, 5] {
                { false, false, false, false, false },
                { false, false, false, false, false },
                { false, false, false, true, false },
                { false, false, false, false, false },
                { false, false, false, false, false },
            });

            Int2 o = new Int2(2, 2);

            // . . F
            // . o X
            // . . P
            EDirFlags forcedNeighbourDir = jps.ForcedNeighbourDir(o, EDirFlags.NORTHWEST);

            Assert.Equal(EDirFlags.NORTHEAST, forcedNeighbourDir);

            // N N .
            // N o X
            // . . P
            EDirFlags naturalNeighbours = JPS.NaturalNeighbours(EDirFlags.NORTHEAST);

            Assert.Equal(EDirFlags.NORTHEAST | EDirFlags.NORTH | EDirFlags.EAST, naturalNeighbours);

            // S S S
            // S o X
            // . . P
            EDirFlags succesorsDir = jps.SuccesorsDir(o, EDirFlags.NORTHWEST);

            Assert.Equal(EDirFlags.NORTHWEST | EDirFlags.NORTH | EDirFlags.NORTHEAST | EDirFlags.WEST, succesorsDir);
        }
Ejemplo n.º 3
0
        private void button8_Click_1(object sender, EventArgs e)
        {
            // JPS
            JPS jps = new JPS();

            var         sw   = Stopwatch.StartNew();
            List <Node> path = jps.Search(this.tileMap, this.src, this.goal, xx1 - 1, yy2 - 1);

            sw.Stop();
            label8.Text = $"Time: {sw.Elapsed.TotalMilliseconds}ms";

            foreach (var p in path)
            {
                this.tileMap[p.X, p.Y] = 2;
                this.pathPlan.Add(new Point(p.X, p.Y));
            }
            Refresh();
        }
Ejemplo n.º 4
0
        private void button6_Click(object sender, EventArgs e)
        {
            // JPS
            JPS jps = new JPS();

            Model.Point src = new Model.Point(1, 1);

            Model.Point dest = new Model.Point(20, 1);
            this.tileMap[dest.X, dest.Y] = 0;

            List <Node> path = jps.Search(this.tileMap, src, dest, 99, 99);

            foreach (var p in path)
            {
                this.tileMap[p.X, p.Y] = 2;
                this.pathPlan.Add(new Point(p.X, p.Y));
            }
            Refresh();
        }
Ejemplo n.º 5
0
 public void Add(JPS newJPS)
 {
     ai.Add(newJPS);
 }