Как сделать игру на тележке из тренажерного зала, где пользователь может играть с клавиатурой

Я узнал о шесте тележки из open ai GYM, и мне было интересно, можно ли сделать игру, в которой пользователь может управлять шестом. Я попытался взять значение нажатия клавиши пользователя в качестве входных данных и привести его в действие, но среда просто зависает. Есть ли способ замедлить игру и использовать пользовательский ввод для управления? Я принимаю пользовательский ввод как

a = input()
action = int(a)

но это кажется неправильным.


person T2020    schedule 12.01.2021    source источник


Ответы (1)


Этот простой цикл работает для меня:

import gym
env = gym.make("CartPole-v0")
env.reset()
while True:
    action = int(input("Action: "))
    if action in (0, 1):
        env.step(action)
        env.render()

Вы можете опираться на него, чтобы достичь желаемого.

Чтобы получить неблокирующий ввод, то есть не дожидаясь, пока пользователь нажмет Enter, проверьте этот вопрос: Python неблокирующий консольный ввод.

person Armadillan    schedule 12.01.2021
comment
Спасибо за помощь. Я просмотрел msvcrt с помощью ноутбука jupyter, но у меня это не работает. Я нажимал кнопки, но он не регистрируется. Вы знаете, в чем может быть проблема? - person T2020; 12.01.2021
comment
Я не думаю, что в jupyter можно использовать msvcrt.getch(). У меня нет большого опыта работы с jupyter, но я не могу найти способ сделать это. Я нашел это, что может сработать, но я не пробовал. Если вы хотите получить ввод, не блокируя игру, но можете каждый раз нажимать ввод, вы, вероятно, можете использовать это. - person Armadillan; 13.01.2021