In [1]:
from pynput.keyboard import Key, Listener
import time
import gym
from gym import wrappers

ACTION = 0

UP = False
LEFT = False
RIGHT = False

def set_action():
    global ACTION
    
    if RIGHT:
        ACTION = 3
    elif LEFT:
        ACTION = 1
    elif UP:
        ACTION = 2
    else:
        ACTION = 0
        

def on_press(key):
    global UP, LEFT, RIGHT

    if key == Key.left:
        LEFT = True
        RIGHT = False
    elif key == Key.right:
        RIGHT = True
        LEFT = False
    elif key == Key.up:
        UP = True
        
    set_action()

def on_release(key):
    global UP, LEFT, RIGHT
    
    if key == Key.left:
        LEFT = False
    elif key == Key.right:
        RIGHT = False
    elif key == Key.up:
        UP = False
        
    set_action()


# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release):


    env = gym.make("LunarLander-v2")

    
    while True:
        s = env.reset()
        done = False
        total = 0.
        ep = 0
        while not done and ep < 700:
            ep += 1
            a = ACTION
            s, r, done, info = env.step(a)
            total += r
            env.render()
            time.sleep(0.02)
        print(total)
    
    env.render(close=True)


[2017-03-17 11:39:34,676] Making new env: LunarLander-v2
-105.48930294
-153.503436658
-216.287405686
-113.875755673
172.343569417
-120.833934964
-268.996129019
-252.742704787
-116.904248649
-51.3448769231
226.942364784
210.641247932
-37.7984961453
-37.2373554855
-25.6074632938
208.036000772
-56.1018776113
-66.51602275
-18.1750965335
-19.0693012818
-73.4830170217
-78.4064580605
-67.7200888931
-34.7776448112
-57.0072933253
186.864160793
-30.2902599493
-32.1437722102
-75.7528293361
-33.9197675374
-48.0087684998
-133.78408588
215.683729491
-61.4939485085
-63.9793937844
-45.7277082067
-17.8956254668
-145.418006887
-267.695083052
-72.4115759668
-53.4254640762
-38.1805027812
201.127438663
-252.527898783
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last)
<ipython-input-1-fd2e57a5bbfb> in <module>()
     70             s, r, done, info = env.step(a)
     71             total += r
---> 72             env.render()
     73             time.sleep(0.02)
     74         print(total)

/usr/local/lib/python2.7/dist-packages/gym/core.pyc in render(self, mode, close)
    155         elif mode not in modes:
    156             raise error.UnsupportedMode('Unsupported rendering mode: {}. (Supported modes for {}: {})'.format(mode, self, modes))
--> 157         return self._render(mode=mode, close=close)
    158 
    159     def close(self):

/usr/local/lib/python2.7/dist-packages/gym/core.pyc in _render(self, mode, close)
    285 
    286     def _render(self, mode='human', close=False):
--> 287         return self.env.render(mode, close)
    288 
    289     def _close(self):

/usr/local/lib/python2.7/dist-packages/gym/core.pyc in render(self, mode, close)
    155         elif mode not in modes:
    156             raise error.UnsupportedMode('Unsupported rendering mode: {}. (Supported modes for {}: {})'.format(mode, self, modes))
--> 157         return self._render(mode=mode, close=close)
    158 
    159     def close(self):

/usr/local/lib/python2.7/dist-packages/gym/envs/box2d/lunar_lander.pyc in _render(self, mode, close)
    354             self.viewer.draw_polygon( [(x, flagy2), (x, flagy2-10/SCALE), (x+25/SCALE, flagy2-5/SCALE)], color=(0.8,0.8,0) )
    355 
--> 356         return self.viewer.render(return_rgb_array = mode=='rgb_array')
    357 
    358 class LunarLanderContinuous(LunarLander):

/usr/local/lib/python2.7/dist-packages/gym/envs/classic_control/rendering.pyc in render(self, return_rgb_array)
     82         self.window.clear()
     83         self.window.switch_to()
---> 84         self.window.dispatch_events()
     85         self.transform.enable()
     86         for geom in self.geoms:

/usr/local/lib/python2.7/dist-packages/pyglet/window/xlib/__init__.pyc in dispatch_events(self)
    851         # Check for the events specific to this window
    852         while xlib.XCheckWindowEvent(_x_display, _window,
--> 853                                      0x1ffffff, byref(e)):
    854             # Key events are filtered by the xlib window event
    855             # handler so they get a shot at the prefiltered event.

ArgumentError: argument 2: <type 'exceptions.TypeError'>: wrong type