Spaces:
Running
Running
from gym_minigrid.minigrid import Ball | |
from gym_minigrid.roomgrid import RoomGrid | |
from gym_minigrid.register import register | |
class Unlock(RoomGrid): | |
""" | |
Unlock a door | |
""" | |
def __init__(self, seed=None): | |
room_size = 6 | |
super().__init__( | |
num_rows=1, | |
num_cols=2, | |
room_size=room_size, | |
max_steps=8*room_size**2, | |
seed=seed | |
) | |
def _gen_grid(self, width, height): | |
super()._gen_grid(width, height) | |
# Make sure the two rooms are directly connected by a locked door | |
door, _ = self.add_door(0, 0, 0, locked=True) | |
# Add a key to unlock the door | |
self.add_object(0, 0, 'key', door.color) | |
self.place_agent(0, 0) | |
self.door = door | |
self.mission = "open the door" | |
def step(self, action): | |
obs, reward, done, info = super().step(action) | |
if action == self.actions.toggle: | |
if self.door.is_open: | |
reward = self._reward() | |
done = True | |
return obs, reward, done, info | |
register( | |
id='MiniGrid-Unlock-v0', | |
entry_point='gym_minigrid.envs:Unlock' | |
) | |