Quellcode durchsuchen

Added _randPos utility function

Maxime Chevalier-Boisvert vor 7 Jahren
Ursprung
Commit
c080bf08d8
2 geänderte Dateien mit 20 neuen und 6 gelöschten Zeilen
  1. 6 6
      gym_minigrid/envs/simple_envs.py
  2. 14 0
      gym_minigrid/minigrid.py

+ 6 - 6
gym_minigrid/envs/simple_envs.py

@@ -51,9 +51,9 @@ class DoorKeyEnv(MiniGridEnv):
             grid.set(splitIdx, i, Wall())
 
         # Place the agent at a random position and orientation
-        self.startPos = (
-            self._randInt(1, splitIdx),
-            self._randInt(1, gridSz-1)
+        self.startPos = self._randPos(
+            1, splitIdx,
+            1, gridSz-1
         )
         self.startDir = self._randInt(0, 4)
 
@@ -63,9 +63,9 @@ class DoorKeyEnv(MiniGridEnv):
 
         # Place a yellow key on the left side
         while True:
-            pos = (
-                self._randInt(1, splitIdx),
-                self._randInt(1, gridSz-1)
+            pos = self._randPos(
+                1, splitIdx,
+                1, gridSz-1
             )
             if pos == self.startPos:
                 continue

+ 14 - 0
gym_minigrid/minigrid.py

@@ -585,8 +585,22 @@ class MiniGridEnv(gym.Env):
         return [seed]
 
     def _randInt(self, low, high):
+        """
+        Generate random integer in [low,high[
+        """
+
         return self.np_random.randint(low, high)
 
+    def _randPos(self, xLow, xHigh, yLow, yHigh):
+        """
+        Generate a random (x,y) position tuple
+        """
+
+        return (
+            self.np_random.randint(xLow, xHigh),
+            self.np_random.randint(yLow, yHigh)
+        )
+
     def _randElem(self, iterable):
         lst = list(iterable)
         idx = self._randInt(0, len(lst))