From 577aab928ad4cf3ccc672a0175949c931a9cc6db Mon Sep 17 00:00:00 2001 From: Thaloria Date: Sat, 15 Oct 2022 21:20:00 +0200 Subject: [PATCH] added reset trigger to farm --- farm/Field_Representation.py | 33 +++++++++++++++++++++++++++++++-- farm/reset_button.jpg | Bin 0 -> 3133 bytes farm/reset_confirm.jpg | Bin 0 -> 13416 bytes 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 farm/reset_button.jpg create mode 100644 farm/reset_confirm.jpg diff --git a/farm/Field_Representation.py b/farm/Field_Representation.py index 9906942..767c6fe 100644 --- a/farm/Field_Representation.py +++ b/farm/Field_Representation.py @@ -35,6 +35,10 @@ class Field: data_coordinates = [] next_level = cv.imread("next_level.jpg", cv.IMREAD_COLOR) next_level_x = cv.imread("next_level_x.jpg", cv.IMREAD_COLOR) + reset_board = cv.imread("reset_button.jpg", cv.IMREAD_COLOR) + reset_confirm = cv.imread("reset_confirm.jpg", cv.IMREAD_COLOR) + reset_counter = 0 + explosives = [] explosives.append(RAINBOW) explosives.append(ARROW_RIGHT) @@ -108,13 +112,38 @@ class Field: # last board state is same as actual if mse(new_observation, self.observation) == 0.0: # no movement detected -> blow explosives or reset - self.detonate_explosive_when_stuck(new_observation) - cv.waitKey(500) + + self.reset_counter += 1 + if self.reset_counter == 1: + pass + elif self.reset_counter == 2: + self.detonate_explosive_when_stuck(new_observation) + return + elif self.reset_counter >= 3: + screenshot = self.capture_window.get_screenshot() + if self.check_for_button_and_execute(screenshot, self.reset_board): + cv.waitKey(500) + screenshot = self.capture_window.get_screenshot() + if self.check_for_button_and_execute(screenshot, self.reset_confirm): + cv.waitKey(500) + + self.reset_counter = 0 + return + else: + return self.find_patterns_and_valid_moves(new_observation) self.observation = new_observation return new_observation + def check_for_button_and_execute(self, screen, needle, offset_left=0, offset_down=0): + rectangles = self.vision_stun.find(screen, needle, 0.70, 1) + if len(rectangles) == 0: + return False + point = self.vision_stun.get_click_points(rectangles)[0] + self.dig_point(point[0] + offset_left, point[1] + offset_down, 500) + return True + def move_to(self, x, y): point_src = (1113, 598) pydirectinput.moveTo(point_src[0], point_src[1]) diff --git a/farm/reset_button.jpg b/farm/reset_button.jpg new file mode 100644 index 0000000000000000000000000000000000000000..99e09da6b51fa26a59cbd40f67170673fa616a6d GIT binary patch literal 3133 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 JX_#Q>e*m6!@;v|m literal 0 HcmV?d00001