OpenAI GYM을 이용한 간단한 게임 실습

자동으로 행동하는 게임 실습

import gym
env = gym.make("FrozenLake-v0")
observation = env.reset()

gym 패키지를 import하고 OpenAI GYM에서 제공하고 있는 환경 중 FrozenLake-v0 환경을 생성합니다.

observation = env.reset()

환경을 초기화 하고 초기화된 첫번째 observation(상태)을 가지고 옵니다.

for _ in range(1000):
    env.render()  # 출력
    action = env.action_space.sample()  # agent의 action
    observation, reward, done, info = env.step(action)

현재 환경을 화면으로 출력합니다.
환경에 따라 적절한 action을 정해야합니다. 이 부분에 알고리즘이 적용되게 되며, 여기서는 랜덤하게 action을 정하고 있습니다.
위에서 정한 action을 취합니다. 이 action을 취한 결과로 ovservation, reward, done, info를 얻습니다.

(Jupyter Notebook 실습코드 - 하단이 보이지 않을 경우 새로고침)

사용자 입력을 받아 행동하는 게임 실습

import sys,tty,termios

class _Getch:
    def __call__(self):
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try:
            tty.setraw(sys.stdin.fileno())
            ch = sys.stdin.read(3)
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
        return ch

inkey = _Getch()

# MACROS
LEFT = 0
DOWN = 1
RIGHT = 2
UP = 3

# Key mapping
arrow_keys = {
    '\x1b[A' : UP,
    '\x1b[B': DOWN,
    '\x1b[C': RIGHT,
    '\x1b[D': LEFT
}

Python에서 입력된 key를 받는 코드입니다.
UP 키 입력시 \x1b[A이 입력, DOWN 키 입력시 \x1b[B 입력...

import gym
from gym.envs.registration import register

register(
    id='FrozenLake-v3',
    entry_point='gym.envs.toy_text:FrozenLakeEnv',
    kwargs={'map_name' : '4x4', 'is_slippery': False}
)

env = gym.make('FrozenLake-v3')
env.render() # Show the initial board

gym 패키지를 import하고 OpenAI GYM에서 제공하고 있는 환경 중 FrozenLake-v3 환경을 생성합니다.

while True:
    # choese an action from keyboard
    key = inkey()
    if key not in arrow_keys.keys():
        print("Game aborted!")
        break

    action = arrow_keys[key]
    state, reward, done, info = env.step(action)
    env.render() # show the board after action
    print("State :", state, "Action: ", action, "Reward: ", reward, "info: ", info)

    if done:
        print("Finished with reward", reward)
        break

키 값을 입력 받고 사용자가 입력한 키 값에 따라 action을 취합니다.
이 action을 취한 결과로 state, reward, done, info를 받아 출력 합니다.

  • 키를 입력 받는 코드는 notebook 또는 pycharm등의 애플리케이션 환경에서는 정상적으로 실행되지 않습니다. 터미널을 이용하여 직접 실행 해야 합니다.
(Jupyter Notebook 실습코드 - 하단이 보이지 않을 경우 새로고침)

results matching ""

    No results matching ""