|
|
@@ -6,12 +6,13 @@ COLUMNS = 7
|
|
|
BLOCK_SIZE = 60
|
|
|
|
|
|
MAX_COLUMN_HEIGHT = 546
|
|
|
-DETECT_COLUMN_OFFSET_X = 8, 50
|
|
|
-DETECT_COLUMN_OFFSET_Y = -11
|
|
|
+DETECT_COLUMN_OFFSET_X = 9, 49
|
|
|
+DETECT_COLUMN_OFFSET_Y = 11
|
|
|
MIN_COLUMN_SAT = 130
|
|
|
MIN_COLUMN_VAL = 120
|
|
|
|
|
|
-COLUMN_VSHIFT = [-2, -2, -1, -1, 0, 0, 0]
|
|
|
+COLUMN_VSHIFT = [1, 1, 1, 0, 0, 0, 0]
|
|
|
+#COLUMN_VSHIFT = [2, 2, 1, 1, 0, 0, 0]
|
|
|
|
|
|
RED, PINK, GREEN, BLUE, YELLOW, NOBLOCK = range(6)
|
|
|
BOMB_OFFSET = NOBLOCK + 1
|
|
|
@@ -58,14 +59,14 @@ def detect_columns(board):
|
|
|
h, s, v = board.getpixel((x, y))
|
|
|
return s > MIN_COLUMN_SAT and v > MIN_COLUMN_VAL
|
|
|
|
|
|
- a, b = DETECT_COLUMN_OFFSET_X
|
|
|
+ miny = -min(DETECT_BASIC_Y, DETECT_BOMB_Y)
|
|
|
|
|
|
- for y in range(MAX_COLUMN_HEIGHT, BLOCK_SIZE, -1):
|
|
|
+ for y in range(MAX_COLUMN_HEIGHT, miny + BLOCK_SIZE, -1):
|
|
|
for col in range(COLUMNS):
|
|
|
x = col * BLOCK_SIZE
|
|
|
- if saturated(x + a, y) and saturated(x + b, y):
|
|
|
+ if all(saturated(x + cx, y) for cx in DETECT_COLUMN_OFFSET_X):
|
|
|
#print('found bottom in column', col)
|
|
|
- return y + 1 - DETECT_COLUMN_OFFSET_Y + COLUMN_VSHIFT[col]
|
|
|
+ return y + 1 + DETECT_COLUMN_OFFSET_Y - COLUMN_VSHIFT[col]
|
|
|
|
|
|
|
|
|
def detect_block_type(board, x, y):
|
|
|
@@ -92,7 +93,8 @@ def detect_block_type(board, x, y):
|
|
|
|
|
|
def detect_blocks(board):
|
|
|
maxy = detect_columns(board) - BLOCK_SIZE
|
|
|
- for y in range(maxy, 0, -BLOCK_SIZE):
|
|
|
+ miny = -min(DETECT_BASIC_Y, DETECT_BOMB_Y)
|
|
|
+ for y in range(maxy, miny, -BLOCK_SIZE):
|
|
|
for col in range(COLUMNS):
|
|
|
x = col * BLOCK_SIZE
|
|
|
yield detect_block_type(board, x, y + COLUMN_VSHIFT[col])
|
|
|
@@ -127,7 +129,8 @@ def print_board(blocks, exa, held):
|
|
|
|
|
|
if exa is not None:
|
|
|
print(' ' * exa + ' |')
|
|
|
- print(' ', '-' * (exa - 1), '(', 'rpgby RPGBY'[held], ')',
|
|
|
+ print(' ' * int(exa > 0), '-' * (exa - 1),
|
|
|
+ '(', 'rpgby RPGBY'[held], ')',
|
|
|
'-' * (COLUMNS - exa - 2), sep='')
|
|
|
|
|
|
|