standalone.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python3
  2. from __future__ import division, print_function
  3. import sys
  4. import numpy
  5. import gym
  6. import time
  7. from optparse import OptionParser
  8. import gym_minigrid
  9. from gym_minigrid.envs import MiniGridEnv
  10. def main():
  11. parser = OptionParser()
  12. parser.add_option(
  13. "-e",
  14. "--env-name",
  15. dest="env_name",
  16. help="gym environment to load",
  17. default='MiniGrid-MultiRoom-N6-v0'
  18. )
  19. (options, args) = parser.parse_args()
  20. # Load the gym environment
  21. env = gym.make(options.env_name)
  22. env.reset()
  23. # Create a window to render into
  24. renderer = env.render('human')
  25. def keyDownCb(keyName):
  26. action = 0
  27. if keyName == 'LEFT':
  28. action = MiniGridEnv.ACTION_LEFT
  29. elif keyName == 'RIGHT':
  30. action = MiniGridEnv.ACTION_RIGHT
  31. elif keyName == 'UP':
  32. action = MiniGridEnv.ACTION_FORWARD
  33. elif keyName == 'SPACE':
  34. action = MiniGridEnv.ACTION_TOGGLE
  35. elif keyName == 'RETURN':
  36. env.reset()
  37. elif keyName == 'ESCAPE':
  38. sys.exit(0)
  39. else:
  40. print("unknown key %s" % keyName)
  41. return
  42. obs, reward, done, info = env.step(action)
  43. print('step=%s, reward=%s' % (env.stepCount, reward))
  44. if done:
  45. print('done!')
  46. env.reset()
  47. renderer.window.setKeyDownCb(keyDownCb)
  48. while True:
  49. env.render('human')
  50. time.sleep(0.01)
  51. # If the window was closed
  52. if renderer.window == None:
  53. break
  54. if __name__ == "__main__":
  55. main()