From 6aa919c24b7ab507d1c7f1a6417d44af5b8387c2 Mon Sep 17 00:00:00 2001 From: Enrique Moran Date: Fri, 18 May 2018 20:44:59 +0200 Subject: [PATCH] updated recognition --- lumberjackBot.py | 54 ++++++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/lumberjackBot.py b/lumberjackBot.py index e95ccf0..6dd7d11 100644 --- a/lumberjackBot.py +++ b/lumberjackBot.py @@ -14,19 +14,18 @@ class lumberjackBot(): self.treeX = treeX self.treeY = treeY # Those attributes has been placed here in order to save calcs: - self.pixelL = (0,0,0) # Left side branch color - self.pixelR = (0,0,0) # Right side branch color - self.lX = treeX - 30 # Left side branch X location - self.rX = treeX + 30 # Right side branch X location - self.y = treeY - 132 # Both side branch Y location + self.x = treeX - 22 # Left side branch X location + self.y = treeY - 244 # Left side branch Y location + self.movement_buffer = ["right"] # First movement - def move(self, direction): - speed = 0.2 - if direction == "left": + def move(self): + speed = 0.17 + if self.movement_buffer[0] == "left" and len(self.movement_buffer) == 2: pyautogui.typewrite(['left', 'left'], speed) - elif direction == "right": + elif self.movement_buffer[0] == "right" and len(self.movement_buffer) == 2: pyautogui.typewrite(['right', 'right'], speed) + self.movement_buffer = self.movement_buffer[1:] def get_color(self, rgb): r = rgb & 0xff @@ -34,35 +33,26 @@ class lumberjackBot(): b = (rgb >> 16) & 0xff return r,g,b - def get_pixel(self, x, y, side): # Modify class atribute + def get_pixel(self, x, y): # Modify class atribute screen = windll.user32.GetDC(0) rgb = windll.gdi32.GetPixel(screen, x, y) - if side == 'L': - self.pixelL = self.get_color(rgb) - elif side == 'R': - self.pixelR = self.get_color(rgb) + return self.get_color(rgb) def play(self): - self.move("right") + pyautogui.moveTo(self.x, self.y) while True: - if self.pixelL == (161, 116, 56): - self.move("right") - elif self.pixelR == (161, 116, 56): - self.move("left") - - - def pixelThreadL(self): - while True: - self.get_pixel(self.lX, self.y, 'L') - - def pixelThreadR(self): - while True: - self.get_pixel(self.rX, self.y, 'R') + pixel_color = self.get_pixel(self.x, self.y) + if pixel_color == (161, 116, 56): + self.movement_buffer.append("right") + else: + self.movement_buffer.append("left") + #print(pixel_color, self.x, self.y, self.movement_buffer) + self.move() if __name__ == "__main__": - print("Running in 5 seconds, minimize this windows.") - time.sleep(5) + print("Running in 3 seconds, minimize this windows. To stop the program drag the mouse to the top-left corner of your screen.") + time.sleep(3) playX, playY = pyautogui.locateCenterOnScreen('playButton.png') pyautogui.moveTo(playX, playY) pyautogui.click() # Start the game by pressing play button @@ -71,8 +61,4 @@ if __name__ == "__main__": time.sleep(0.3) print("Im playing... To stop me click on IDLE and press CTRL+F6.") lumberjack = lumberjackBot(playX, playY, treeX, treeY) - t1 = threading.Thread(target = lumberjack.pixelThreadL, args = ()) - t2 = threading.Thread(target = lumberjack.pixelThreadR, args = ()) - t1.start() - t2.start() lumberjack.play() # Game start