Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1819:programme

Dies ist eine alte Version des Dokuments!


Programm zum Spielen von Space Invaders vom 20.12.18:

# -*- coding: utf-8 -*- „“„ Created on Thu Dec 13 16:09:46 2018

@author: Johanna “„“

#!/usr/bin/env python from future import print_function

import sys, gym, time

# # Test yourself as a learning agent! Pass environment name as a command-line argument, for example: # # python keyboard_agent.py SpaceInvadersNoFrameskip-v4 #

env = gym.make('SpaceInvaders-v0' if len(sys.argv)<2 else sys.argv[1])

if not hasattr(env.action_space, 'n'):

  raise Exception('Keyboard agent only supports discrete action spaces')

ACTIONS = env.action_space.n SKIP_CONTROL = 0 # Use previous control decision SKIP_CONTROL times, that's how you

                  # can test what skip is still usable.

human_agent_action = 0 human_wants_restart = False human_sets_pause = False

def key_press(key, mod):

  global human_agent_action, human_wants_restart, human_sets_pause
  if key==0xff0d: human_wants_restart = True
  if key==32: human_sets_pause = not human_sets_pause
  a = int( key - ord('0') )
  if a <= 0 or a >= ACTIONS: return
  human_agent_action = a

def key_release(key, mod):

  global human_agent_action
  a = int( key - ord('0') )
  if a <= 0 or a >= ACTIONS: return
  if human_agent_action == a:
      human_agent_action = 0

env.render() env.unwrapped.viewer.window.on_key_press = key_press env.unwrapped.viewer.window.on_key_release = key_release

def rollout(env):

  global human_agent_action, human_wants_restart, human_sets_pause
  human_wants_restart = False
  obser = env.reset()
  skip = 0
  total_reward = 0
  total_timesteps = 0
  while 1:
      if not skip:
          #print("taking action {}".format(human_agent_action))
          a = human_agent_action
          total_timesteps += 1
          skip = SKIP_CONTROL
      else:
          skip -= 1
      obser, r, done, info = env.step(a)
      if r != 0:
          print("reward %0.3f" % r)
      total_reward += r
      window_still_open = env.render()
      if window_still_open==False: return False
      if done: break
      if human_wants_restart: break
      while human_sets_pause:
          env.render()
          time.sleep(0.1)
      time.sleep(0.1)
  print("timesteps %i reward %0.2f" % (total_timesteps, total_reward))

print(„ACTIONS={}“.format(ACTIONS)) print(„Press keys 1 2 3 … to take actions 1 2 3 …“) print(„No keys pressed is taking action 0“)

while 1:

  window_still_open = rollout(env)
  if window_still_open==False: break
ws1819/programme.1545323214.txt.gz · Zuletzt geändert: 2018/12/20 17:26 von johannakistenbruegge