diff options
author | clarkzjw <[email protected]> | 2018-01-02 21:59:04 +0800 |
---|---|---|
committer | clarkzjw <[email protected]> | 2018-01-02 21:59:04 +0800 |
commit | f3e1d8caa70829ab3167632905bccaed0b1fb3cd (patch) | |
tree | d0b63973e6fed302022cbcfd3a11dbde199dadbf /bot.py | |
parent | 66240fe4c0704c5481fe203119367bcac7790e23 (diff) | |
download | LumberJack-f3e1d8caa70829ab3167632905bccaed0b1fb3cd.tar.gz |
924
Diffstat (limited to 'bot.py')
-rw-r--r-- | bot.py | 111 |
1 files changed, 35 insertions, 76 deletions
@@ -1,89 +1,48 @@ | |||
1 | import pyautogui as pg | 1 | import time |
2 | from time import sleep | ||
3 | |||
4 | 2 | ||
5 | def move(_pos, _now): | 3 | import mss |
6 | if _pos == 'left' and _now == 'left': | 4 | import pyautogui as pg |
7 | pg.typewrite(['left']) | 5 | from keyboard import press_and_release |
8 | pg.typewrite(['left']) | 6 | from numpy import array, uint8 |
9 | elif _pos == 'left' and _now == 'right': | ||
10 | pg.typewrite(['right']) | ||
11 | pg.typewrite(['right']) | ||
12 | elif _pos == 'right' and _now == 'right': | ||
13 | pg.typewrite(['right']) | ||
14 | pg.typewrite(['right']) | ||
15 | elif _pos == 'right' and _now == 'left': | ||
16 | pg.typewrite(['left']) | ||
17 | pg.typewrite(['left']) | ||
18 | |||
19 | width, height = pg.size() | ||
20 | width *= 0.5 | ||
21 | pg.moveTo(333, 600) | ||
22 | pg.click() | ||
23 | 7 | ||
24 | posY = [360, 260, 160] | ||
25 | posX = [276, 398] | ||
26 | 8 | ||
27 | q = ['left', 'left', 'left'] | 9 | def begin(): |
10 | pg.click(440, 900, 2) | ||
28 | 11 | ||
29 | im = pg.screenshot(region=(0, 0, width, height)) | ||
30 | l0 = im.getpixel((posX[0], posY[0])) | ||
31 | l1 = im.getpixel((posX[0], posY[1])) | ||
32 | l2 = im.getpixel((posX[0], posY[2])) | ||
33 | 12 | ||
34 | r0 = im.getpixel((posX[1], posY[0])) | 13 | TREE = uint8([56, 116, 161]) |
35 | r1 = im.getpixel((posX[1], posY[1])) | ||
36 | r2 = im.getpixel((posX[1], posY[2])) | ||
37 | 14 | ||
38 | if l0[0] == 161 and l0[1] == 116 and l0[2] == 56: | 15 | # from left to right |
39 | q[0] = 'right' | 16 | posY = [360, 460] |
40 | pos = 'right' | 17 | # from bottom to up |
41 | else: | 18 | posX = [640, 540, 440, 340, 240, 140] |
42 | pos = 'left' | ||
43 | if l1[0] == 161 and l1[1] == 116 and l1[2] == 56: | ||
44 | q[1] = 'right' | ||
45 | if l2[0] == 161 and l2[1] == 116 and l2[2] == 56: | ||
46 | q[2] = 'right' | ||
47 | 19 | ||
48 | qlen = 3 | ||
49 | 20 | ||
50 | while True: | 21 | def is_tree(c1): |
51 | if qlen == 3: | 22 | if c1[0] == TREE[0] and c1[1] == TREE[1] and c1[2] == TREE[2]: |
52 | now = q[0] | 23 | return True |
53 | move(pos, now) | 24 | else: |
54 | now = q[1] | 25 | return False |
55 | move(pos, now) | ||
56 | now = q[2] | ||
57 | move(pos, now) | ||
58 | qlen = 0 | ||
59 | elif qlen == 0: | ||
60 | im = pg.screenshot(region=(0, 0, width, height)) | ||
61 | l0 = im.getpixel((posX[0], posY[0])) | ||
62 | l1 = im.getpixel((posX[0], posY[1])) | ||
63 | l2 = im.getpixel((posX[0], posY[2])) | ||
64 | 26 | ||
65 | r0 = im.getpixel((posX[1], posY[0])) | ||
66 | r1 = im.getpixel((posX[1], posY[1])) | ||
67 | r2 = im.getpixel((posX[1], posY[2])) | ||
68 | 27 | ||
69 | if l0[0] == 161 and l0[1] == 116 and l0[2] == 56: | 28 | def parse_screen(img, moves): |
70 | q[0] = 'right' | 29 | left = [img[x, posY[0]] for x in posX] |
30 | for i in range(6): | ||
31 | if is_tree(left[i]): | ||
32 | moves.append("right, right") | ||
71 | else: | 33 | else: |
72 | q[0] = 'left' | 34 | moves.append("left, left") |
73 | if l1[0] == 161 and l1[1] == 116 and l1[2] == 56: | 35 | |
74 | q[1] = 'right' | ||
75 | else: | ||
76 | q[1] = 'left' | ||
77 | if l2[0] == 161 and l2[1] == 116 and l2[2] == 56: | ||
78 | q[2] = 'right' | ||
79 | else: | ||
80 | q[2] = 'left' | ||
81 | 36 | ||
82 | now = q[0] | 37 | with mss.mss() as sct: |
83 | move(pos, now) | 38 | screen = sct.monitors[1] |
84 | now = q[1] | 39 | screen["width"] = screen["width"] / 2.0 |
85 | move(pos, now) | 40 | begin() |
86 | now = q[2] | ||
87 | move(pos, now) | ||
88 | 41 | ||
89 | sleep(0.095) | 42 | while True: |
43 | img = array(sct.grab(screen)) | ||
44 | moves = list() | ||
45 | parse_screen(img, moves) | ||
46 | for m in moves: | ||
47 | press_and_release(m) | ||
48 | time.sleep(0.145) | ||