10

I was trying to implement Atari Games while rendering I get an error as given below:

line 283, in render
    raise error.Error(
gym.error.Error: render(mode='human') is deprecated. Please supply `render_mode` when constructing your environment, e.g., gym.make(ID, render_mode='human'). The new `render_mode` keyword argument supports DPI scaling, audio, and native framerates.

Screenshot of the complete error I get is attached here.

My code is given below:

episodes = 5

for episode in range(1, episodes+1):
state = env.reset()
done = False
score = 0 

while not done:
    env.render()
    action = random.choice([0,1,2,3,4,5])
    n_state, reward, done, info = env.step(action)
    score+=reward
print('Episode:{} Score:{}'.format(episode, score))
env.close()

There is a similar post in stack overflow where in the solution given was:

pip install pyglet==1.2.4

Unfortunately this didn't work for me either.

desertnaut
  • 57,590
  • 26
  • 140
  • 166
Natasha
  • 351
  • 1
  • 2
  • 10

1 Answers1

15

I have figured it out by myself. The solution was to just change the environment that we are working by updating render_mode='human' in env:

env = gym.make('SpaceInvaders-v0', render_mode='human')

Full code:

 import gym
 import random
 import time
 env = gym.make('SpaceInvaders-v0', render_mode='human')
 height, width, channels = env.observation_space.shape
 actions = env.action_space.n
 env.unwrapped.get_action_meanings()
 episodes = 5
 for episode in range(1, episodes+1):
    state = env.reset()
    done = False
    score = 0 
 while not done:
    time.sleep(0.1)
    action = random.choice([0,1,2,3,4,5])
    n_state, reward, done, info = env.step(action)       
    score+=reward
print('Episode:{} Score:{}'.format(episode, score))
env.close()
desertnaut
  • 57,590
  • 26
  • 140
  • 166
Natasha
  • 351
  • 1
  • 2
  • 10