我写了一个小程序,用于在openai-gym上随机玩pacman。但它的表现非常糟糕,只有一项声明正在if条件下执行。游戏没有渲染(可能是因为env.reset())没有渲染。
import gym
episode = 0
#episode_reward = 0
#running_reward = None
env = gym.make("MsPacman-v0")
env.reset()
while True:
env.render()
action = env.action_space.sample()
#print (action)
_, __, done, ___ = env.step(action)
#print(reward)
#episode_reward += reward
if done:
print('Game over') #Why is this line not printed
episode = episode + 1 #Why is episode not getting updated
#running_reward = episode_reward if running_reward is None else running_reward * 0.99 + episode_reward * 0.01
#print('Episode %d, episode reward total was %f. running mean: %f' % (episode, episode_reward, running_reward))
print('Episode, ', episode) #Only this line is printed on screen
#episode_reward = 0
env.reset()
希望我没有犯一些愚蠢的错误!
答案 0 :(得分:2)
答案 1 :(得分:1)
根据我们的讨论in chat,您的文件中似乎混合了制表符和空格,这导致块看起来看起来是连续的,但是解释为两个单独的块({{{ 1}}阻止和其中一个)。
显然这是因为if
循环使用制表符缩进,但不的while
块的最后一部分包括if
语句使用仅个空格。所以它是:
print
所以这被解释为等同于:
\t___if done:
\t___....print('Game over')
\t___....episode = episode + 1
........print('Episode ', episode)
........env.reset()
如果有Underhanded C competition的python模拟,可能需要注意的事项。