Formatting
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
"""Contains board class"""
|
"""Contains board class"""
|
||||||
import enum
|
import enum
|
||||||
from typing import Union, List, Dict, Optional, Set, Tuple
|
|
||||||
from dataclasses import dataclass
|
|
||||||
import itertools
|
import itertools
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Dict, List, Optional, Set, Tuple, Union
|
||||||
|
|
||||||
|
|
||||||
class SpecialCard(enum.Enum):
|
class SpecialCard(enum.Enum):
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
"""Contains functions to find significant pieces of a solitaire screenshot"""
|
"""Contains functions to find significant pieces of a solitaire screenshot"""
|
||||||
|
|
||||||
from typing import Optional, Tuple
|
|
||||||
from dataclasses import dataclass
|
|
||||||
import itertools
|
import itertools
|
||||||
import numpy
|
from dataclasses import dataclass
|
||||||
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
|
import numpy
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import numpy as np
|
|||||||
|
|
||||||
from ..board import Board, Card, NumberCard, SpecialCard
|
from ..board import Board, Card, NumberCard, SpecialCard
|
||||||
from . import adjustment, card_finder
|
from . import adjustment, card_finder
|
||||||
from .configuration import Configuration, ButtonState
|
from .configuration import ButtonState, Configuration
|
||||||
|
|
||||||
|
|
||||||
def grouper(
|
def grouper(
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
"""Functions to detect card value"""
|
"""Functions to detect card value"""
|
||||||
|
|
||||||
from typing import List, Tuple, Optional, Dict
|
|
||||||
import enum
|
import enum
|
||||||
import itertools
|
import itertools
|
||||||
import numpy as np
|
from typing import Dict, List, Optional, Tuple
|
||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
from .adjustment import Adjustment, get_square
|
import numpy as np
|
||||||
|
|
||||||
from ..board import Card, NumberCard, SpecialCard
|
from ..board import Card, NumberCard, SpecialCard
|
||||||
|
from .adjustment import Adjustment, get_square
|
||||||
|
|
||||||
|
|
||||||
def _extract_squares(
|
def _extract_squares(
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
"""Contains configuration class"""
|
"""Contains configuration class"""
|
||||||
import zipfile
|
|
||||||
import json
|
|
||||||
from typing import List, Tuple, Dict, Union
|
|
||||||
import io
|
|
||||||
import dataclasses
|
import dataclasses
|
||||||
from dataclasses import dataclass
|
|
||||||
import tempfile
|
|
||||||
import cv2
|
|
||||||
import enum
|
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
|
import numpy as np
|
||||||
from . import adjustment
|
|
||||||
from . import card_finder
|
|
||||||
from .. import board
|
from .. import board
|
||||||
|
from . import adjustment, card_finder
|
||||||
|
|
||||||
ADJUSTMENT_FILE_NAME = "adjustment.json"
|
ADJUSTMENT_FILE_NAME = "adjustment.json"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
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(
|
def drag(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"""Contains actions that can be used on the board"""
|
"""Contains actions that can be used on the board"""
|
||||||
from typing import List, Tuple, Optional
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
from typing import List, Optional, Tuple
|
||||||
|
|
||||||
from .. import board
|
from .. import board
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
"""Contains function to iterate different kinds of possible actions"""
|
"""Contains function to iterate different kinds of possible actions"""
|
||||||
|
import pdb
|
||||||
from typing import Iterator, List, Tuple
|
from typing import Iterator, List, Tuple
|
||||||
|
|
||||||
from .. import board
|
from .. import board
|
||||||
from . import board_actions
|
from . import board_actions
|
||||||
import pdb
|
|
||||||
|
|
||||||
|
|
||||||
def possible_huakill_action(
|
def possible_huakill_action(
|
||||||
@@ -124,6 +125,7 @@ def possible_goal_move_actions(
|
|||||||
]
|
]
|
||||||
top_cards = field_cards + bunker_cards
|
top_cards = field_cards + bunker_cards
|
||||||
|
|
||||||
|
result: List[board_actions.GoalAction] = []
|
||||||
for source, index, card in top_cards:
|
for source, index, card in top_cards:
|
||||||
if not (card.number == search_board.getGoal(card.suit) + 1):
|
if not (card.number == search_board.getGoal(card.suit) + 1):
|
||||||
continue
|
continue
|
||||||
@@ -143,6 +145,9 @@ def possible_goal_move_actions(
|
|||||||
)
|
)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
result = sorted(result, key=lambda x: not x.obvious)
|
||||||
|
yield from iter(result)
|
||||||
|
|
||||||
|
|
||||||
def _can_stack(bottom: board.Card, top: board.Card) -> bool:
|
def _can_stack(bottom: board.Card, top: board.Card) -> bool:
|
||||||
if not isinstance(bottom, board.NumberCard):
|
if not isinstance(bottom, board.NumberCard):
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
"""Contains solver for solitaire"""
|
"""Contains solver for solitaire"""
|
||||||
from typing import List, Iterator, Optional
|
import typing
|
||||||
|
from typing import Iterator, List, Optional
|
||||||
|
|
||||||
from ..board import Board
|
from ..board import Board
|
||||||
from . import board_actions
|
from . import board_actions
|
||||||
|
from .board_actions import (DragonKillAction, GoalAction, HuaKillAction,
|
||||||
|
MoveAction)
|
||||||
from .board_possibilities import possible_actions
|
from .board_possibilities import possible_actions
|
||||||
from .board_actions import MoveAction, GoalAction, HuaKillAction, DragonKillAction
|
|
||||||
|
|
||||||
|
|
||||||
class ActionStack:
|
class ActionStack:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
"""Contains an example board to run tests on"""
|
"""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
|
Suit = NumberCard.Suit
|
||||||
|
|
||||||
|
|||||||
@@ -2,13 +2,11 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from shenzhen_solitaire.board import NumberCard, Position
|
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 import board_possibilities
|
||||||
|
from shenzhen_solitaire.solver.board_actions import (BunkerizeAction,
|
||||||
|
GoalAction, HuaKillAction,
|
||||||
|
MoveAction)
|
||||||
|
|
||||||
from .boards import TEST_BOARD
|
from .boards import TEST_BOARD
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import copy
|
import copy
|
||||||
import unittest
|
import unittest
|
||||||
from typing import List, Tuple, Union, Optional
|
from typing import List, Optional, Tuple, Union
|
||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"""Contains the SolverTest class"""
|
"""Contains the SolverTest class"""
|
||||||
import unittest
|
|
||||||
import copy
|
import copy
|
||||||
|
import unittest
|
||||||
|
|
||||||
from shenzhen_solitaire.solver import solver
|
from shenzhen_solitaire.solver import solver
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
import pyautogui
|
import tempfile
|
||||||
import cv2
|
import time
|
||||||
import numpy as np
|
|
||||||
from pathlib import Path
|
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.card_detection.configuration as configuration
|
||||||
import shenzhen_solitaire.solver.solver as solver
|
|
||||||
import tempfile
|
|
||||||
import shenzhen_solitaire.clicker.main as clicker
|
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)
|
OFFSET = (0, 0)
|
||||||
SIZE = (2560, 1440)
|
SIZE = (2560, 1440)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import numpy as np
|
|
||||||
import cv2
|
import cv2
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
import shenzhen_solitaire.card_detection.configuration as configuration
|
import shenzhen_solitaire.card_detection.configuration as configuration
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user