Source code for problems.multi_object_search.example_worlds

"""This file has some examples of world string."""

import random

############# Example Worlds ###########
# See env.py:interpret for definition of
# the format

world0 = (
    """
rx...
.x.xT
.....
""",
    "r",
)

world1 = (
    """
rx.T...
.x.....
...xx..
.......
.xxx.T.
.xxx...
.......
""",
    "r",
)

# Used to test the shape of the sensor
world2 = (
    """
.................
.................
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxTxxxx..
..xxxxxxrxTxxxx..
..xxxxxxxxTxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
.................
.................
""",
    "r",
)

# Used to test sensor occlusion
world3 = (
    """
.................
.................
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxTxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxx...xxxxxx..
..xxxx..xx.xxxx..
..xxxx..r.Txxxx..
..xxxx..xx.xxxx..
..xxxxxx..xxxxx..
..xxxxTx..xxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
..xxxxxxxxxxxxx..
.................
.................
""",
    "r",
)


[docs] def random_world(width, length, num_obj, num_obstacles, robot_char="r"): worldstr = [["." for i in range(width)] for j in range(length)] # First place obstacles num_obstacles_placed = 0 while num_obstacles_placed < num_obstacles: x = random.randrange(0, width) y = random.randrange(0, length) if worldstr[y][x] == ".": worldstr[y][x] = "x" num_obstacles_placed += 1 num_obj_placed = 0 while num_obj_placed < num_obj: x = random.randrange(0, width) y = random.randrange(0, length) if worldstr[y][x] == ".": worldstr[y][x] = "T" num_obj_placed += 1 # Finally place the robot while True: x = random.randrange(0, width) y = random.randrange(0, length) if worldstr[y][x] == ".": worldstr[y][x] = robot_char break # Create the string. finalstr = [] for row_chars in worldstr: finalstr.append("".join(row_chars)) finalstr = "\n".join(finalstr) return finalstr, robot_char