Bladeren bron

Randomized door positions in RoomGrid

Maxime Chevalier-Boisvert 7 jaren geleden
bovenliggende
commit
2f34df4e42
1 gewijzigde bestanden met toevoegingen van 7 en 4 verwijderingen
  1. 7 4
      gym_minigrid/envs/roomgrid.py

+ 7 - 4
gym_minigrid/envs/roomgrid.py

@@ -108,19 +108,22 @@ class RoomGrid(MiniGridEnv):
             for i in range(0, self.num_cols):
                 room = self.room_grid[j][i]
 
+                x_l, y_l = room.top
+                x_m, y_m = (room.top[0] + room.size[0] - 1, room.top[1] + room.size[1] - 1)
+
                 # Door positions, order is right, down, left, up
                 if i < self.num_cols - 1:
-                    room.door_pos[0] = (room.top[0] + self.room_size - 1, room.top[1] + self.room_size // 2)
                     room.neighbors[0] = self.room_grid[j][i+1]
+                    room.door_pos[0] = (x_m, self._randInt(y_l, y_m))
                 if j < self.num_rows - 1:
-                    room.door_pos[1] = (room.top[0] + self.room_size // 2, room.top[1] + self.room_size - 1)
                     room.neighbors[1] = self.room_grid[j+1][i]
+                    room.door_pos[1] = (self._randInt(x_l, x_m), y_m)
                 if i > 0:
-                    room.door_pos[2] = (room.top[0], room.top[1] + self.room_size // 2)
                     room.neighbors[2] = self.room_grid[j][i-1]
+                    room.door_pos[2] = room.neighbors[2].door_pos[0]
                 if j > 0:
-                    room.door_pos[3] = (room.top[0] + self.room_size // 2, room.top[1])
                     room.neighbors[3] = self.room_grid[j-1][i]
+                    room.door_pos[3] = room.neighbors[3].door_pos[1]
 
         # The agent starts in the middle, facing right
         self.startPos = (