standalone.py 1.4 KB

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