From 8c43ae4eb0d0d75dc26c0b9cec3f7f94720ebab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20W=C3=B6lfer?= Date: Wed, 12 Feb 2020 01:04:08 +0100 Subject: [PATCH] Formatting --- shenzhen_solitaire/board.py | 4 ++-- .../card_detection/adjustment.py | 7 ++++--- .../card_detection/board_parser.py | 2 +- .../card_detection/card_finder.py | 8 +++++--- .../card_detection/configuration.py | 19 ++++++++++--------- shenzhen_solitaire/clicker/main.py | 13 +++++++------ shenzhen_solitaire/solver/board_actions.py | 3 ++- .../solver/board_possibilities.py | 7 ++++++- shenzhen_solitaire/solver/solver.py | 7 +++++-- test/boards.py | 2 +- test/test_chain.py | 10 ++++------ test/test_cv.py | 2 +- test/test_solver.py | 2 +- tools/assistant.py | 15 ++++++++------- tools/generate/field.py | 3 ++- 15 files changed, 59 insertions(+), 45 deletions(-) diff --git a/shenzhen_solitaire/board.py b/shenzhen_solitaire/board.py index 0027d7f..9d7209a 100644 --- a/shenzhen_solitaire/board.py +++ b/shenzhen_solitaire/board.py @@ -1,8 +1,8 @@ """Contains board class""" import enum -from typing import Union, List, Dict, Optional, Set, Tuple -from dataclasses import dataclass import itertools +from dataclasses import dataclass +from typing import Dict, List, Optional, Set, Tuple, Union class SpecialCard(enum.Enum): diff --git a/shenzhen_solitaire/card_detection/adjustment.py b/shenzhen_solitaire/card_detection/adjustment.py index 0fd3596..4ae9847 100644 --- a/shenzhen_solitaire/card_detection/adjustment.py +++ b/shenzhen_solitaire/card_detection/adjustment.py @@ -1,10 +1,11 @@ """Contains functions to find significant pieces of a solitaire screenshot""" -from typing import Optional, Tuple -from dataclasses import dataclass import itertools -import numpy +from dataclasses import dataclass +from typing import Optional, Tuple + import cv2 +import numpy @dataclass diff --git a/shenzhen_solitaire/card_detection/board_parser.py b/shenzhen_solitaire/card_detection/board_parser.py index 2e35a97..b859637 100644 --- a/shenzhen_solitaire/card_detection/board_parser.py +++ b/shenzhen_solitaire/card_detection/board_parser.py @@ -9,7 +9,7 @@ import numpy as np from ..board import Board, Card, NumberCard, SpecialCard from . import adjustment, card_finder -from .configuration import Configuration, ButtonState +from .configuration import ButtonState, Configuration def grouper( diff --git a/shenzhen_solitaire/card_detection/card_finder.py b/shenzhen_solitaire/card_detection/card_finder.py index 58e78ac..99b9fb3 100644 --- a/shenzhen_solitaire/card_detection/card_finder.py +++ b/shenzhen_solitaire/card_detection/card_finder.py @@ -1,12 +1,14 @@ """Functions to detect card value""" -from typing import List, Tuple, Optional, Dict import enum import itertools -import numpy as np +from typing import Dict, List, Optional, Tuple + import cv2 -from .adjustment import Adjustment, get_square +import numpy as np + from ..board import Card, NumberCard, SpecialCard +from .adjustment import Adjustment, get_square def _extract_squares( diff --git a/shenzhen_solitaire/card_detection/configuration.py b/shenzhen_solitaire/card_detection/configuration.py index b0c9400..9287070 100644 --- a/shenzhen_solitaire/card_detection/configuration.py +++ b/shenzhen_solitaire/card_detection/configuration.py @@ -1,17 +1,18 @@ """Contains configuration class""" -import zipfile -import json -from typing import List, Tuple, Dict, Union -import io import dataclasses -from dataclasses import dataclass -import tempfile -import cv2 import enum +import io +import json +import tempfile +import zipfile +from dataclasses import dataclass +from typing import Dict, List, Tuple, Union + +import cv2 import numpy as np -from . import adjustment -from . import card_finder + from .. import board +from . import adjustment, card_finder ADJUSTMENT_FILE_NAME = "adjustment.json" diff --git a/shenzhen_solitaire/clicker/main.py b/shenzhen_solitaire/clicker/main.py index 401b7e8..573bed0 100644 --- a/shenzhen_solitaire/clicker/main.py +++ b/shenzhen_solitaire/clicker/main.py @@ -1,10 +1,11 @@ -import shenzhen_solitaire.solver.board_actions as board_actions -import shenzhen_solitaire.card_detection.configuration as configuration -import shenzhen_solitaire.card_detection.adjustment as adjustment -import shenzhen_solitaire.board as board -from typing import List, Tuple -import pyautogui import time +from typing import List, Tuple + +import pyautogui +import shenzhen_solitaire.board as board +import shenzhen_solitaire.card_detection.adjustment as adjustment +import shenzhen_solitaire.card_detection.configuration as configuration +import shenzhen_solitaire.solver.board_actions as board_actions def drag( diff --git a/shenzhen_solitaire/solver/board_actions.py b/shenzhen_solitaire/solver/board_actions.py index f919c92..da79f5f 100644 --- a/shenzhen_solitaire/solver/board_actions.py +++ b/shenzhen_solitaire/solver/board_actions.py @@ -1,6 +1,7 @@ """Contains actions that can be used on the board""" -from typing import List, Tuple, Optional from dataclasses import dataclass +from typing import List, Optional, Tuple + from .. import board diff --git a/shenzhen_solitaire/solver/board_possibilities.py b/shenzhen_solitaire/solver/board_possibilities.py index 17ce3d4..73c8231 100644 --- a/shenzhen_solitaire/solver/board_possibilities.py +++ b/shenzhen_solitaire/solver/board_possibilities.py @@ -1,8 +1,9 @@ """Contains function to iterate different kinds of possible actions""" +import pdb from typing import Iterator, List, Tuple + from .. import board from . import board_actions -import pdb def possible_huakill_action( @@ -124,6 +125,7 @@ def possible_goal_move_actions( ] top_cards = field_cards + bunker_cards + result: List[board_actions.GoalAction] = [] for source, index, card in top_cards: if not (card.number == search_board.getGoal(card.suit) + 1): continue @@ -143,6 +145,9 @@ def possible_goal_move_actions( ) break + result = sorted(result, key=lambda x: not x.obvious) + yield from iter(result) + def _can_stack(bottom: board.Card, top: board.Card) -> bool: if not isinstance(bottom, board.NumberCard): diff --git a/shenzhen_solitaire/solver/solver.py b/shenzhen_solitaire/solver/solver.py index f5a32c6..b1ff81e 100644 --- a/shenzhen_solitaire/solver/solver.py +++ b/shenzhen_solitaire/solver/solver.py @@ -1,9 +1,12 @@ """Contains solver for solitaire""" -from typing import List, Iterator, Optional +import typing +from typing import Iterator, List, Optional + from ..board import Board from . import board_actions +from .board_actions import (DragonKillAction, GoalAction, HuaKillAction, + MoveAction) from .board_possibilities import possible_actions -from .board_actions import MoveAction, GoalAction, HuaKillAction, DragonKillAction class ActionStack: diff --git a/test/boards.py b/test/boards.py index e9a428f..f53a248 100644 --- a/test/boards.py +++ b/test/boards.py @@ -1,5 +1,5 @@ """Contains an example board to run tests on""" -from shenzhen_solitaire.board import NumberCard, SpecialCard, Board +from shenzhen_solitaire.board import Board, NumberCard, SpecialCard Suit = NumberCard.Suit diff --git a/test/test_chain.py b/test/test_chain.py index 5ed1e4a..e2c7a46 100644 --- a/test/test_chain.py +++ b/test/test_chain.py @@ -2,13 +2,11 @@ import unittest from shenzhen_solitaire.board import NumberCard, Position -from shenzhen_solitaire.solver.board_actions import ( - MoveAction, - BunkerizeAction, - GoalAction, - HuaKillAction, -) from shenzhen_solitaire.solver import board_possibilities +from shenzhen_solitaire.solver.board_actions import (BunkerizeAction, + GoalAction, HuaKillAction, + MoveAction) + from .boards import TEST_BOARD diff --git a/test/test_cv.py b/test/test_cv.py index d60751d..74930bb 100644 --- a/test/test_cv.py +++ b/test/test_cv.py @@ -2,7 +2,7 @@ import copy import unittest -from typing import List, Tuple, Union, Optional +from typing import List, Optional, Tuple, Union import cv2 import numpy as np diff --git a/test/test_solver.py b/test/test_solver.py index 4fe0f95..dd32f03 100644 --- a/test/test_solver.py +++ b/test/test_solver.py @@ -1,6 +1,6 @@ """Contains the SolverTest class""" -import unittest import copy +import unittest from shenzhen_solitaire.solver import solver diff --git a/tools/assistant.py b/tools/assistant.py index 41a5699..420868a 100644 --- a/tools/assistant.py +++ b/tools/assistant.py @@ -1,14 +1,15 @@ -import pyautogui -import cv2 -import numpy as np +import tempfile +import time from pathlib import Path -from shenzhen_solitaire.card_detection.board_parser import parse_board +import cv2 +import numpy as np + +import pyautogui import shenzhen_solitaire.card_detection.configuration as configuration -import shenzhen_solitaire.solver.solver as solver -import tempfile import shenzhen_solitaire.clicker.main as clicker -import time +import shenzhen_solitaire.solver.solver as solver +from shenzhen_solitaire.card_detection.board_parser import parse_board OFFSET = (0, 0) SIZE = (2560, 1440) diff --git a/tools/generate/field.py b/tools/generate/field.py index bf844f9..f19368c 100644 --- a/tools/generate/field.py +++ b/tools/generate/field.py @@ -1,5 +1,6 @@ -import numpy as np import cv2 +import numpy as np + import shenzhen_solitaire.card_detection.configuration as configuration