|
@ -32,15 +32,14 @@ def attempt_rotate(piece, board, i, j): |
|
|
return piece |
|
|
return piece |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def clear_rows(board): |
|
|
def clear_rows(board, score): |
|
|
clear_indices = np.where(np.all(board == 1, axis=1))[0] |
|
|
clear_indices = np.where(np.all(board == 1, axis=1))[0] |
|
|
if clear_indices.size > 0: |
|
|
if clear_indices.size > 0: |
|
|
board = np.delete(board, clear_indices, axis=0) |
|
|
board = np.delete(board, clear_indices, axis=0) |
|
|
new_rows = np.zeros((len(clear_indices), board.shape[1])) |
|
|
new_rows = np.zeros((len(clear_indices), board.shape[1])) |
|
|
board = np.vstack([new_rows, board]) |
|
|
board = np.vstack([new_rows, board]) |
|
|
global score |
|
|
score = update_score(score) |
|
|
score = update_score(score, len(clear_indices)) |
|
|
return board, score |
|
|
return board |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def calculate_shadow(piece, board, i, j): |
|
|
def calculate_shadow(piece, board, i, j): |
|
@ -81,8 +80,8 @@ def game_over(board): |
|
|
board |
|
|
board |
|
|
) # Clear the board and continue or call sys.exit() to end |
|
|
) # Clear the board and continue or call sys.exit() to end |
|
|
|
|
|
|
|
|
def update_score(score, cleared_rows): |
|
|
def update_score(score): |
|
|
return score + cleared_rows |
|
|
return score + 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
def main(): |
|
@ -123,13 +122,13 @@ def main(): |
|
|
i += 1 |
|
|
i += 1 |
|
|
else: |
|
|
else: |
|
|
board = place_piece(current_piece, board, i, j) |
|
|
board = place_piece(current_piece, board, i, j) |
|
|
board = clear_rows(board) |
|
|
board, score = clear_rows(board, score) |
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
i, j = 0, 4 |
|
|
i, j = 0, 4 |
|
|
elif command == "S": |
|
|
elif command == "S": |
|
|
i = calculate_shadow(current_piece, board, i, j) |
|
|
i = calculate_shadow(current_piece, board, i, j) |
|
|
board = place_piece(current_piece, board, i, j) |
|
|
board = place_piece(current_piece, board, i, j) |
|
|
board = clear_rows(board) |
|
|
board, score = clear_rows(board, score) |
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
i, j = START_POS |
|
|
i, j = START_POS |
|
|
elif command == "G": |
|
|
elif command == "G": |
|
@ -140,7 +139,7 @@ def main(): |
|
|
i += 1 |
|
|
i += 1 |
|
|
else: |
|
|
else: |
|
|
board = place_piece(current_piece, board, i, j) |
|
|
board = place_piece(current_piece, board, i, j) |
|
|
board = clear_rows(board) |
|
|
board, score = clear_rows(board, score) |
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
i, j = START_POS |
|
|
i, j = START_POS |
|
|
|
|
|
|
|
|