def reset(self): shift = 0x2A f = 0x21 # r = 0x13 release_key(W) release_key(A) release_key(D) press_key(shift) press_key(f) release_key(shift) release_key(f) self.reward -= 1. self.current_screen = None self.done = True for i in list(range(2))[::-1]: print(i + 1) time.sleep(1)
def right(self): if random.randrange(0, 3) == 1: press_key(W) else: release_key(W) press_key(D) release_key(A) release_key(S)
def main(): # for i in list(range(4))[::-1]: # print(i + 1) # time.sleep(1) episodes = 25000 agent = Agent(63 * 206 * 3, 4) # (state_space_size, action_space_size) # (state_space_size = image size[h*w*c] -> first layer input) # (action_space_size = last layer output -> action[0,...,3]) observation = Observe() agent.handle_episode_start() paused = False for _ in range(episodes): observation.done = False agent.steps = 0 while not observation.done: if not paused: observation.state = observation.get_state( ) # maybe move to Agent.step() action = agent.step(observation) agent.take_action(action) observation.reset_check() # reward += 1 if X steps were made without ending an episode if agent.steps % 500 == 0: observation.reward += 1. print(f"steps = {agent.steps}") keys = key_check() if 'T' in keys: if paused: paused = False print('unpaused!') time.sleep(1) else: print('Pausing!') release_key(W) release_key(A) release_key(D) paused = True time.sleep(1) # press 'q' to close the window if cv2.waitKey(25) & 0xFF == ord('q'): cv2.destroyAllWindows() break
def reverse(self): press_key(S) release_key(A) release_key(W) release_key(D)
def straight(self): press_key(W) release_key(A) release_key(D) release_key(S)