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); }
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); }
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(); }
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(); }
public void Add(JPS newJPS) { ai.Add(newJPS); }