예제 #1
0
    def __init__(self, start, target, allow_diagonals, World):
        self.start = Node(start, target, 0, None, World, True, allow_diagonals)
        self.target = Node(target, target, -1, None, World, True,
                           allow_diagonals)

        self.open_nodes = [self.start]
        self.closed_nodes = []

        self.last_node = None

        self.reached = False
        self.available_tiles = World.list_available_tiles()

        while (not (self.start.is_accessible())):
            stdout.write("\033[;1m" + "\033[1;31m")
            stdout.write('START Tile have no children, choose another one ! ')
            stdout.write("\033[0;0m")
            start = int(input("New START Tile --->  "))
            self.start = Node(start, target, 0, None, World, False,
                              allow_diagonals, True)
        while (not (self.target.is_accessible())):
            stdout.write("\033[;1m" + "\033[1;31m")
            stdout.write('TARGET Tile have no children, choose another one ! ')
            stdout.write("\033[0;0m")
            target = int(input("New TARGET Tile --->  "))
            self.target = Node(target, target, 0, None, World, False,
                               allow_diagonals, True)

        self.path = [self.start.tile_pos]
        self.costs = [0]
예제 #2
0
def test_outofbounds():
    env = World(10, 10, 0.2)
    free_tiles = env.list_available_tiles()
    new_node = [Node(i, 84, 0, None, env) for i in free_tiles]

    for elem in new_node:
        assert (elem.tile_pos >= 0 and elem.tile_pos <= (env.L * env.H))
예제 #3
0
def test_availability():
    env = World(10, 10, 0.2)
    free_tiles = env.list_available_tiles()

    new_node = [Node(i, 84, 0, None, env) for i in free_tiles]

    for elem in new_node:
        assert (env.w[elem.tile_pos] != 1)
예제 #4
0
def test_uniqueness():
    env = World(10, 10, 0.2)
    free_tiles = env.list_available_tiles()
    nodes = [Node(i, 84, 0, None, env) for i in free_tiles]

    # list of positions
    pos = []
    for elem in nodes:
        pos.append(elem.tile_pos)

    # check uniqueness
    seen = set()
    uniqueness = not any(k in seen or seen.add(k) for k in pos)

    assert (uniqueness == True)