Columbus/columbus/humanPlayer.py

53 lines
1.3 KiB
Python

from time import sleep, time
from env import *
import numpy as np
import pygame
from observables import Observable, CnnObservable
def main():
#env = ColumbusTest3_1()
env = ColumbusEasyObstacles(fps=30)
env.start_pos = [0.6, 0.3]
playEnv(env)
env.close()
def playEnv(env):
env.reset()
done = False
to = 0
while not done:
t1 = time()
env.render()
pos = (0.5, 0.5)
for event in pygame.event.get():
pass
keys = pygame.key.get_pressed()
if to == 0:
to = int(env.fps/2)
if keys[pygame.K_m]:
env.draw_entities = not env.draw_entities
else:
to = 0
else:
to -= 1
pos = pygame.mouse.get_pos()
pos = (min(max((pos[0]-env.joystick_offset[0]-20)/60, 0), 1),
min(max((pos[1]-env.joystick_offset[1]-20)/60, 0), 1))
obs, rew, done, info = env.step(np.array(pos, dtype=np.float32))
print('Reward: '+str(rew))
print('Score: '+str(info))
t2 = time()
dt = t2 - t1
delay = (1/env.fps - dt)
if delay < 0:
print("[!] Can't keep framerate!")
else:
sleep(delay)
if __name__ == '__main__':
main()