standalone.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. 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-MultiRoom-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 = env.actions.left
  28. elif keyName == 'RIGHT':
  29. action = env.actions.right
  30. elif keyName == 'UP':
  31. action = env.actions.forward
  32. elif keyName == 'SPACE':
  33. action = env.actions.toggle
  34. elif keyName == 'CTRL':
  35. action = env.actions.wait
  36. elif keyName == 'RETURN':
  37. env.reset()
  38. elif keyName == 'ESCAPE':
  39. sys.exit(0)
  40. else:
  41. print("unknown key %s" % keyName)
  42. return
  43. obs, reward, done, info = env.step(action)
  44. print('step=%s, reward=%s' % (env.stepCount, reward))
  45. if done:
  46. print('done!')
  47. env.reset()
  48. renderer.window.setKeyDownCb(keyDownCb)
  49. while True:
  50. env.render('human')
  51. time.sleep(0.01)
  52. # If the window was closed
  53. if renderer.window == None:
  54. break
  55. if __name__ == "__main__":
  56. main()