Exemplo n.º 1
0
    def test_methods(self):
        self.node1 = NavNode(Point(x=0, y=0), 2, 4)
        self.node1.calculate_f()
        self.node2 = NavNode(Point(x=1, y=0), 2, 3)
        self.node2.calculate_f()
        self.node3 = NavNode(Point(x=2, y=0), 2, 2)
        self.node3.calculate_f()
        self.node4 = NavNode(Point(x=2, y=1), 2, 1)
        self.node4.calculate_f()
        self.node5 = NavNode(Point(x=2, y=0), 3, 2)  # like node3

        my_collection = NodePrioritySet()
        my_collection.add(self.node2, self.node2.f)
        my_collection.add(self.node1, self.node1.f)
        my_collection.add(self.node3, self.node3.f)

        self.assertFalse(my_collection.is_empty())

        self.assertTrue(self.node1 in my_collection)
        self.assertTrue(self.node2 in my_collection)
        self.assertTrue(self.node3 in my_collection)
        self.assertFalse(self.node4 in my_collection)
        self.assertTrue(self.node5 in my_collection)  # node5 has same position as node3

        self.assertEquals(my_collection[self.node1], self.node1)
        self.assertEquals(my_collection[self.node5], self.node3)

        self.assertEquals(my_collection.pop(), self.node3)
        self.assertEquals(my_collection.pop(), self.node2)
        self.assertEquals(my_collection.pop(), self.node1)

        self.assertTrue(my_collection.is_empty())
        self.assertFalse(self.node1 in my_collection)
Exemplo n.º 2
0
    def test_methods(self):
        self.node1 = NavNode(Point(x=0, y=0), 2, 4)
        self.node1.calculate_f()
        self.node2 = NavNode(Point(x=1, y=0), 2, 3)
        self.node2.calculate_f()
        self.node3 = NavNode(Point(x=2, y=0), 2, 2)
        self.node3.calculate_f()
        self.node4 = NavNode(Point(x=2, y=1), 2, 1)
        self.node4.calculate_f()
        self.node5 = NavNode(Point(x=2, y=0), 3, 2)  # like node3

        my_collection = NodePrioritySet()
        my_collection.add(self.node2, self.node2.f)
        my_collection.add(self.node1, self.node1.f)
        my_collection.add(self.node3, self.node3.f)

        self.assertFalse(my_collection.is_empty())

        self.assertTrue(self.node1 in my_collection)
        self.assertTrue(self.node2 in my_collection)
        self.assertTrue(self.node3 in my_collection)
        self.assertFalse(self.node4 in my_collection)
        self.assertTrue(self.node5
                        in my_collection)  # node5 has same position as node3

        self.assertEquals(my_collection[self.node1], self.node1)
        self.assertEquals(my_collection[self.node5], self.node3)

        self.assertEquals(my_collection.pop(), self.node3)
        self.assertEquals(my_collection.pop(), self.node2)
        self.assertEquals(my_collection.pop(), self.node1)

        self.assertTrue(my_collection.is_empty())
        self.assertFalse(self.node1 in my_collection)
Exemplo n.º 3
0
    def test_first_in_first_out(self):
        self.node1 = NavNode(Point(x=0, y=2), 2, 2)
        self.node2 = NavNode(Point(x=1, y=1), 2, 2)
        self.node3 = NavNode(Point(x=2, y=0), 2, 2)

        my_collection = NodePrioritySet()
        my_collection.add(self.node1, 4)
        my_collection.add(self.node2, 4)
        my_collection.add(self.node3, 4)

        self.assertEquals(my_collection.pop(), self.node3)
        self.assertEquals(my_collection.pop(), self.node2)
        self.assertEquals(my_collection.pop(), self.node1)
Exemplo n.º 4
0
    def test_node_extends_point(self):
        dimensions = Rect(0, 0, 12, 12)
        start = Point(x=3, y=4)
        goal = Point(x=8, y=11)
        barriers = []
        NavNode.board = Board(dimensions, start, goal, barriers)

        position1 = Point(x=8, y=9)
        node1 = NavNode(position1, 0)
        position2 = Point(x=8, y=10)
        node2 = NavNode(position2, 1, None, node1)
        node3 = NavNode(position1, 2, None, node2)

        # test equals()
        self.assertTrue(node1.__eq__(node1))
        self.assertFalse(node1.__eq__(node2))
        self.assertTrue(node1.__eq__(node3))

        # test as_tuple()
        self.assertEquals(node1.position.as_tuple(), (8, 9))

        # test is_solution()
        goal_node = NavNode(goal, 3, None, node3)
        self.assertTrue(goal_node.is_solution())

        # test get_ancestors()
        ancestors = goal_node.get_ancestors()
        self.assertTrue(ancestors[0].__eq__(node3))
        self.assertTrue(ancestors[1].__eq__(node2))
        self.assertTrue(ancestors[2].__eq__(node1))
Exemplo n.º 5
0
    def run(self):
        start_node = NavNode(position=self.board.start, g=0)

        a_star = AStar(
            draw=self.gfx.draw if not self.disable_gfx else lambda _: 0,
            disable_gfx=self.disable_gfx,
            draw_every=self.draw_every,
            print_path=self.print_path
        )

        a_star.run(start_node=start_node)
Exemplo n.º 6
0
    def test_first_in_first_out(self):
        self.node1 = NavNode(Point(x=0, y=2), 2, 2)
        self.node2 = NavNode(Point(x=1, y=1), 2, 2)
        self.node3 = NavNode(Point(x=2, y=0), 2, 2)

        my_collection = NodePrioritySet()
        my_collection.add(self.node1, 4)
        my_collection.add(self.node2, 4)
        my_collection.add(self.node3, 4)

        self.assertEquals(my_collection.pop(), self.node3)
        self.assertEquals(my_collection.pop(), self.node2)
        self.assertEquals(my_collection.pop(), self.node1)
Exemplo n.º 7
0
    def test_node_extends_point(self):
        dimensions = Rect(0, 0, 12, 12)
        start = Point(x=3, y=4)
        goal = Point(x=8, y=11)
        barriers = []
        NavNode.board = Board(dimensions, start, goal, barriers)

        position1 = Point(x=8, y=9)
        node1 = NavNode(position1, 0)
        position2 = Point(x=8, y=10)
        node2 = NavNode(position2, 1, None, node1)
        node3 = NavNode(position1, 2, None, node2)

        # test equals()
        self.assertTrue(node1.__eq__(node1))
        self.assertFalse(node1.__eq__(node2))
        self.assertTrue(node1.__eq__(node3))

        # test as_tuple()
        self.assertEquals(node1.position.as_tuple(), (8, 9))

        # test is_solution()
        goal_node = NavNode(goal, 3, None, node3)
        self.assertTrue(goal_node.is_solution())

        # test get_ancestors()
        ancestors = goal_node.get_ancestors()
        self.assertTrue(ancestors[0].__eq__(node3))
        self.assertTrue(ancestors[1].__eq__(node2))
        self.assertTrue(ancestors[2].__eq__(node1))