From 1fb5a92de409b88802d0edd1846410a506d67010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20W=C3=B6lfer?= Date: Sun, 14 Jun 2020 00:56:31 +0200 Subject: [PATCH] Added laptop config --- laptop_conf.zip | Bin 0 -> 63510 bytes shenzhen_solitaire/clicker/__init__.py | 63 ++++++++++++++++--------- tools/assistant.py | 32 +++++++++---- 3 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 laptop_conf.zip diff --git a/laptop_conf.zip b/laptop_conf.zip new file mode 100644 index 0000000000000000000000000000000000000000..99a9e6ed1386e409a550527cf8fce5eb8298c65d GIT binary patch literal 63510 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 literal 0 HcmV?d00001 diff --git a/shenzhen_solitaire/clicker/__init__.py b/shenzhen_solitaire/clicker/__init__.py index 9c6923f..2cd698e 100644 --- a/shenzhen_solitaire/clicker/__init__.py +++ b/shenzhen_solitaire/clicker/__init__.py @@ -10,28 +10,36 @@ import warnings from dataclasses import dataclass from shenzhen_solitaire.board import SpecialCard -DRAG_DURATION = 0.4 -CLICK_DURATION = 0.5 +DRAG_DURATION = 0.2 +CLICK_DURATION = 1 +DRAGON_WAIT = 1 +HUA_WAIT = 1 +GOAL_WAIT = 0.4 def drag( src: Tuple[int, int], dst: Tuple[int, int], offset: Tuple[int, int] = (0, 0) ) -> None: + time.sleep(DRAG_DURATION / 3) pyautogui.moveTo(x=src[0] + offset[0], y=src[1] + offset[1]) - pyautogui.dragTo( - x=dst[0] + offset[0], - y=dst[1] + offset[1], - duration=DRAG_DURATION, - tween=lambda x: 0 if x < 0.5 else 1, + pyautogui.mouseDown() + time.sleep(DRAG_DURATION / 3) + pyautogui.moveTo( + x=dst[0] + offset[0], y=dst[1] + offset[1], ) + pyautogui.mouseUp() + time.sleep(DRAG_DURATION / 3) def click(point: Tuple[int, int], offset: Tuple[int, int] = (0, 0)) -> None: + time.sleep(CLICK_DURATION / 3) pyautogui.moveTo(x=point[0] + offset[0], y=point[1] + offset[1]) pyautogui.mouseDown() - time.sleep(CLICK_DURATION) + time.sleep(CLICK_DURATION / 3) pyautogui.mouseUp() + time.sleep(CLICK_DURATION / 3) + time.sleep(DRAGON_WAIT) @dataclass @@ -44,9 +52,9 @@ class DragAction: class ClickAction: destination: Tuple[int, int] - +@dataclass class WaitAction: - pass + duration: float def _parse_field( @@ -106,15 +114,24 @@ def parse_action( ) ) elif action_name == "goal": - obvious = ( - goal_values[info["card"]["suit"].lower()] <= min(goal_values.values()) + 1 - ) - assert (goal_values[info["card"]["suit"].lower()] == 0) or ( - goal_values[info["card"]["suit"].lower()] + 1 == info["card"]["value"] - ) - goal_values[info["card"]["suit"].lower()] = info["card"]["value"] + + current_value = goal_values[info["card"]["suit"].lower()] + proposed_value = info["card"]["value"] + + assert (current_value == 0) or (current_value + 1 == proposed_value) + + if proposed_value == min(goal_values.values()) + 1: + obvious = True + elif proposed_value == 2: + obvious = True + else: + obvious = False + + goal_values[info["card"]["suit"].lower()] = proposed_value + if obvious: - return WaitAction() + return WaitAction(duration=GOAL_WAIT) + goal = ( int(info["goal_slot_index"]) * conf.goal_adjustment.dx + conf.goal_adjustment.x @@ -132,7 +149,9 @@ def parse_action( ) return DragAction(source=source, destination=goal) elif action_name == "huakill": - return WaitAction() + return WaitAction(duration=HUA_WAIT) + else: + assert 0 def handle_actions( @@ -141,9 +160,9 @@ def handle_actions( conf: configuration.Configuration, ) -> None: goal_values = {"red": 0, "black": 0, "green": 0} - action_tuples = [ + action_tuples = ( (action, parse_action(action, conf, goal_values)) for action in actions - ] + ) for name, action in action_tuples: print(name) if isinstance(action, DragAction): @@ -151,4 +170,4 @@ def handle_actions( elif isinstance(action, ClickAction): click(action.destination, offset) elif isinstance(action, WaitAction): - time.sleep(2) + time.sleep(action.duration) diff --git a/tools/assistant.py b/tools/assistant.py index 46a0da4..c1a810d 100644 --- a/tools/assistant.py +++ b/tools/assistant.py @@ -18,17 +18,24 @@ from shenzhen_solitaire.card_detection.board_parser import parse_start_board OFFSET = (0, 0) # SIZE = (2560, 1440) SIZE = (1366, 768) -NEW_BUTTON = (1900, 1100) +# NEW_BUTTON = (1900, 1100) +NEW_BUTTON = (1340, 750) SAVE_UNSOLVED = False UNSOLVED_DIR = "E:/shenzhen-solitaire/unsolved" -SOLVER_PATH = '/home/lukas/documents/coding/rust/shenzhen-solitaire/target/release/solver' +SOLVER_PATH = ( + "/home/lukas/documents/coding/rust/shenzhen-solitaire/target/release/solver" +) + def extern_solve(board: Board) -> List[Dict[str, Any]]: - result = subprocess.run([SOLVER_PATH], input=board.to_json(), capture_output=True, text=True) + result = subprocess.run( + [SOLVER_PATH], input=board.to_json(), capture_output=True, text=True + ) return json.loads(result.stdout) -def take_screenshot() : + +def take_screenshot(): with tempfile.TemporaryDirectory(prefix="shenzhen_solitaire") as screenshot_dir: print("Taking screenshot") screenshot_file = Path(screenshot_dir) / "screenshot.png" @@ -37,6 +44,7 @@ def take_screenshot() : image = cv2.imread(str(screenshot_file)) return image + def solve(conf: configuration.Configuration) -> None: image = take_screenshot() board = parse_start_board(image, conf) @@ -52,16 +60,20 @@ def solve(conf: configuration.Configuration) -> None: def main() -> None: - parser = argparse.ArgumentParser( - description="Solve board" + parser = argparse.ArgumentParser(description="Solve board") + parser.add_argument( + "config_path", type=str, help="Config path", ) parser.add_argument( - "config_path", - type=str, - help="Config path", + "--no-failsafe", + dest="no_failsafe", + action="store_false", + help="Enable 0.1 second delay between all actions to allow user to interrupt", ) - args = parser.parse_args() + + if not args.no_failsafe: + pyautogui.PAUSE = 0 time.sleep(3) conf = configuration.load(args.config_path) while True: