Newer
Older
#!/usr/bin/env python
import argparse
import retro
parser = argparse.ArgumentParser()
parser.add_argument('game', help='the name or path for the game to run')
parser.add_argument('state', nargs='?', help='the initial state file to load, minus the extension')
parser.add_argument('--scenario', '-s', default='scenario', help='the scenario file to load, minus the extension')
parser.add_argument('--record', '-r', action='store_true', help='record bk2 movies')
parser.add_argument('--verbose', '-v', action='count', default=1, help='increase verbosity (can be specified multiple times)')
parser.add_argument('--quiet', '-q', action='count', default=0, help='decrease verbosity (can be specified multiple times)')
args = parser.parse_args()
env = retro.make(args.game, args.state or retro.STATE_DEFAULT, scenario=args.scenario, record=args.record)
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
verbosity = args.verbose - args.quiet
try:
while True:
ob = env.reset()
t = 0
totrew = 0
while True:
ac = env.action_space.sample()
ob, rew, done, info = env.step(ac)
t += 1
if t % 10 == 0:
if verbosity > 1:
infostr = ''
if info:
infostr = ', info: ' + ', '.join(['%s=%i' % (k, v) for k, v in info.items()])
print(('t=%i' % t) + infostr)
env.render()
totrew += rew
if verbosity > 0:
if rew > 0:
print('t=%i got reward: %d, current reward: %d' % (t, rew, totrew))
if rew < 0:
print('t=%i got penalty: %d, current reward: %d' % (t, rew, totrew))
if done:
env.render()
try:
if verbosity >= 0:
print("done! total reward: time=%i, reward=%d" % (t, totrew))
input("press enter to continue")
print()
else:
input("")
except EOFError:
exit(0)
break
except KeyboardInterrupt:
exit(0)