update farm for 4.0

This commit is contained in:
Thaloria@web.de
2023-05-05 19:17:40 +02:00
parent c7deaaf6c7
commit a9e25527f5
3 changed files with 22 additions and 17 deletions

View File

@@ -142,7 +142,7 @@ class Crops(GameBase):
# get an updated image of the game # get an updated image of the game
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
# screenshot = cv.imread("playfield.jpg") # screenshot = cv.imread("playfield.jpg")
screenshot = screenshot[58:1134, 230:2113] # 1883,1076 screenshot = screenshot[190:1230, 260:2090]
self.screenshot = screenshot self.screenshot = screenshot
# gray = cv.cvtColor(screenshot, cv.COLOR_BGR2GRAY) # gray = cv.cvtColor(screenshot, cv.COLOR_BGR2GRAY)
# thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)[1] # thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)[1]
@@ -153,11 +153,11 @@ class Crops(GameBase):
self.current_strategy = RAINBOW_STRATEGY self.current_strategy = RAINBOW_STRATEGY
cv.waitKey(500) cv.waitKey(500)
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
screenshot = screenshot[58:1134, 230:2113] screenshot = screenshot[190:1230, 260:2090]
if self.check_for_button_and_execute(screenshot, self.next_level_x, offset_left, offset_down): if self.check_for_button_and_execute(screenshot, self.next_level_x, offset_left, offset_down):
cv.waitKey(500) cv.waitKey(500)
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
screenshot = screenshot[58:1134, 230:2113] screenshot = screenshot[190:1230, 260:2090]
# cv.imshow("screenshot", screenshot) # cv.imshow("screenshot", screenshot)
# cv.waitKey(150) # cv.waitKey(150)

17
farm.py
View File

@@ -31,6 +31,8 @@ class Farm(GameBase):
def __init__(self, overlay): def __init__(self, overlay):
super().__init__(overlay) super().__init__(overlay)
self.farm_reset_board = cv.imread("control_elements/farm_reset_button.jpg", cv.IMREAD_COLOR)
self.colors.append(PINK) self.colors.append(PINK)
self.fill_data_coordinates() self.fill_data_coordinates()
@@ -78,7 +80,7 @@ class Farm(GameBase):
return return
elif self.reset_counter >= 3: elif self.reset_counter >= 3:
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
if self.check_for_button_and_execute(screenshot, self.reset_board): if self.check_for_button_and_execute(screenshot, self.farm_reset_board):
cv.waitKey(500) cv.waitKey(500)
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
if self.check_for_button_and_execute(screenshot, self.reset_confirm): if self.check_for_button_and_execute(screenshot, self.reset_confirm):
@@ -97,21 +99,22 @@ class Farm(GameBase):
# get an updated image of the game # get an updated image of the game
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
# screenshot = cv.imread("field_farm.jpg") # screenshot = cv.imread("field_farm.jpg")
screenshot = screenshot[58:1134, 230:2113] # 1883,1076 screenshot = screenshot[190:1230, 260:2090] # 1883,1076
# gray = cv.cvtColor(screenshot, cv.COLOR_BGR2GRAY) # gray = cv.cvtColor(screenshot, cv.COLOR_BGR2GRAY)
# thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)[1] # thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)[1]
if self.check_for_next_level(screenshot, self.next_level): if self.check_for_next_level(screenshot, self.next_level):
cv.waitKey(500) cv.waitKey(500)
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
screenshot = screenshot[58:1134, 230:2113] screenshot = screenshot[190:1230, 260:2090]
if self.check_for_next_level(screenshot, self.next_level_x): if self.check_for_next_level(screenshot, self.next_level_x):
cv.waitKey(500) cv.waitKey(500)
screenshot = self.capture_window.get_screenshot() screenshot = self.capture_window.get_screenshot()
screenshot = screenshot[58:1134, 230:2113] screenshot = screenshot[190:1230, 260:2090]
# cv.imshow("screenshot", screenshot) #cv.imshow("screenshot", screenshot)
# cv.waitKey(150) #cv.waitKey(150)
# continue #return
#continue
data_coords = np.zeros((8, 14), dtype=object) data_coords = np.zeros((8, 14), dtype=object)
# field = Field() # field = Field()
for needle_key in self.needles.keys(): for needle_key in self.needles.keys():

View File

@@ -104,10 +104,12 @@ class GameBase:
def assess_playfield_and_make_move(self): def assess_playfield_and_make_move(self):
pass pass
#screenshot = screenshot[190:1230, 260:2090]
#[58: 1134, 230: 2113]
def fill_data_coordinates(self): def fill_data_coordinates(self):
# 230 to 2110 = 1883 / 14 = 134.5 # 260 to 2090 = 1883 / 14 = 130
# 60 to 1130 = 1076 / 8 = 134.5 # 190 to 1230 = 1076 / 8 = 130
dim = 134.5 dim = 130
for e in range(0, 8, 1): for e in range(0, 8, 1):
for i in range(0, 14, 1): for i in range(0, 14, 1):
self.data_coordinates[e][i] = [i * dim, e * dim, dim, dim] self.data_coordinates[e][i] = [i * dim, e * dim, dim, dim]
@@ -121,8 +123,8 @@ class GameBase:
return True return True
def check_for_next_level(self, screen, needle): def check_for_next_level(self, screen, needle):
offset_left = 230 offset_left = 260
offset_down = 58 offset_down = 190
rectangles = self.vision_stun.find(screen, needle, 0.70, 1) rectangles = self.vision_stun.find(screen, needle, 0.70, 1)
if len(rectangles) == 0: if len(rectangles) == 0:
return False return False
@@ -218,8 +220,8 @@ class GameBase:
return int(center_x), int(center_y) return int(center_x), int(center_y)
def move_tile(self, point_source, point_dest): def move_tile(self, point_source, point_dest):
offset_left = 230 offset_left = 260
offset_down = 58 offset_down = 190
pydirectinput.moveTo(point_source[0] + offset_left, point_source[1] + offset_down) pydirectinput.moveTo(point_source[0] + offset_left, point_source[1] + offset_down)
# pydirectinput.moveTo(0,0) # pydirectinput.moveTo(0,0)
pydirectinput.mouseDown() pydirectinput.mouseDown()