From d0f4937507dba9fa1396a801f385017f7873f802 Mon Sep 17 00:00:00 2001 From: Thaloria Date: Fri, 21 Jul 2023 14:31:07 +0200 Subject: [PATCH] added first draft litris --- litris.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/litris.py b/litris.py index d842e0e..1541b63 100644 --- a/litris.py +++ b/litris.py @@ -204,12 +204,15 @@ class Litris(GameBase): for e in range(19, 17, - 1): for i in range(0, 19, 1): if current_board[e][i] == 0 and current_board[e - 1][i] == 0 and current_board[e][i + 1] == 0 and current_board[e - 1][i + 1] == 0: - return i - BLOCK_COL + if e == 19: + return i - BLOCK_COL + elif e < 19 and current_board[e + 1][i] == 1 and current_board[e + 1][i + 1] == 1: + return i - BLOCK_COL if np.array_equal(stone, BL3_FULL): # block for e in range(19, 17, - 1): for i in range(0, 19, 1): - if current_board[e - 1][i] == 0 and current_board[e][i + 1] == 0 and current_board[e - 1][i + 1] == 0: + if current_board[e][i] == 1 and current_board[e - 1][i] == 0 and current_board[e][i + 1] == 0 and current_board[e - 1][i + 1] == 0: return i - Bl3_COL elif np.array_equal(stone, L1_FULL): # L1 @@ -223,7 +226,7 @@ class Litris(GameBase): for e in range(19, 17, - 1): for i in range(0, 19, 1): if current_board[e - 1][i] == 0 and current_board[e - 1][i + 1] == 0 and current_board[e - 1][i + 2] == 0 and \ - current_board[e][i + 2] == 0: + current_board[e][i + 2] == 0 and current_board[e][i] == 1 and current_board[e][i + 1] == 1: return i - L2_COL elif np.array_equal(stone, LINE_FULL): # Line @@ -231,24 +234,38 @@ class Litris(GameBase): for i in range(0, 19, 1): if current_board[e][i] == 0 and current_board[e][i + 1] == 0 and current_board[e][i + 2] == 0 and \ current_board[e][i + 3] == 0: - return i - LINE_COL + if e == 19: + return i - LINE_COL + elif e < 19 and current_board[e + 1][i] == 1 and current_board[e + 1][i + 1] == 1 and current_board[e + 1][i + 2] and current_board[e + 1][i + 3]: + return i - LINE_COL elif np.array_equal(stone, DOT_FULL): # Dot for e in range(19, 18, - 1): for i in range(0, 19, 1): if current_board[e][i] == 0: - return i - DOT_COL + if e == 19: + return i - DOT_COL + elif e < 19 and current_board[e + 1][i] == 1: + return i - DOT_COL + elif np.array_equal(stone, DDOT_FULL) : # DDot for e in range(19, 18, - 1): for i in range(0, 19, 1): if current_board[e][i] == 0 and current_board[e][i + 1] == 0: - return i - DDOT_COL + if e == 19: + return i - DDOT_COL + elif e < 19 and current_board[e + 1][i] == 1 and current_board[e + 1][i + 1]: + return i - DDOT_COL elif np.array_equal(stone, DDDOT_FULL) : # DDot for e in range(19, 18, - 1): for i in range(0, 19, 1): if current_board[e][i] == 0 and current_board[e][i + 1] == 0 and current_board[e][i + 2] == 0: + if e == 19: + return i - DDDOT_COL + elif e < 19 and current_board[e + 1][i] == 1 and current_board[e + 1][i + 1] == 1 and current_board[e + 1][i + 2]: + return i - DDDOT_COL return i - DDDOT_COL def move_stone(self, col_movement):