in custom_envs/obstructedmaze_fixedgrid.py [0:0]
def add_door(self, i, j, door_idx=0, color=None, locked=False, key_in_box=False, blocked=False):
"""
Add a door. If the door must be locked, it also adds the key.
If the key must be hidden, it is put in a box. If the door must
be obstructed, it adds a ball in front of the door.
"""
door, door_pos = super().add_door(i, j, door_idx, color, locked=locked)
if blocked:
vec = DIR_TO_VEC[door_idx]
blocking_ball = Ball(self.blocking_ball_color) if blocked else None
self.grid.set(door_pos[0]-vec[0], door_pos[1]-vec[1], blocking_ball)
if locked:
obj = Key(door.color)
if key_in_box:
box = Box(self.box_color) if key_in_box else None
box.contains = obj
obj = box
self.place_in_room(i, j, obj)
return door, door_pos