forked from janskvara/project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
trainedAgent.py
72 lines (58 loc) · 1.96 KB
/
trainedAgent.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from environment import Environment
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from fastai.vision.all import *
import keyboard
import time
import pyautogui as pyautogui
import cv2
def label_func(x): return x.parent.name
def scan_for_restart(): # scans for the game restart
result = pyautogui.locateOnScreen(r'jobData\restart.png', grayscale=True, region=(100, 150, 400, 350), confidence=0.9)
if result != None: # restart button located
time.sleep(1)
print('RESTART')
keyboard.press_and_release('space')
def load(path): # loads trained model
learner = load_learner(path)
print('Model loaded.')
return(learner)
def decide(learner):
image = environment.getWhiteBlackScreen()
cv2.imshow('Bot View', image)
cv2.waitKey(1)
# Decide about next step
result = learner.predict(image)
action = result[0]
return action #ddown / dnothing / dup
def run():
prevKey = None
keyboard.press_and_release('space') #game start
# decide about next moves until user presses 'e' key
while not keyboard.is_pressed("e"):
scan_for_restart()
action = decide(learner)
# transfer from directory name to key name
if action == 'ddown':
keyToPress = 'down'
elif action == 'dup':
keyToPress = 'up'
else:
continue # do nothing
# key hold or switch of the key that is being held
if keyToPress == prevKey:
continue
elif keyToPress != prevKey:
if prevKey != None:
keyboard.release(prevKey)
keyboard.press(keyToPress)
print('Input: ' + keyToPress)
prevKey = keyToPress
if __name__ == '__main__':
# for models trained on colab
import pathlib
temp = pathlib.PosixPath
pathlib.PosixPath = pathlib.WindowsPath
environment = Environment()
learner = load('jobData\model_ale-10.pkl')
run()