|
|
@ -38,6 +38,8 @@ def clear_rows(board): |
|
|
|
board = np.delete(board, clear_indices, axis=0) |
|
|
|
new_rows = np.zeros((len(clear_indices), board.shape[1])) |
|
|
|
board = np.vstack([new_rows, board]) |
|
|
|
global score |
|
|
|
score = update_score(score, len(clear_indices)) |
|
|
|
return board |
|
|
|
|
|
|
|
|
|
|
@ -48,7 +50,7 @@ def calculate_shadow(piece, board, i, j): |
|
|
|
return i |
|
|
|
|
|
|
|
|
|
|
|
def display_board(board, piece, i, j): |
|
|
|
def display_board(board, piece, i, j, score): |
|
|
|
display = board.copy() |
|
|
|
shadow_i = calculate_shadow(piece, board, i, j) |
|
|
|
n, m = piece.shape |
|
|
@ -69,7 +71,7 @@ def display_board(board, piece, i, j): |
|
|
|
for row in display |
|
|
|
) |
|
|
|
) |
|
|
|
print() |
|
|
|
print(f"Score: {score}\n") |
|
|
|
|
|
|
|
|
|
|
|
def game_over(board): |
|
|
@ -78,9 +80,13 @@ def game_over(board): |
|
|
|
return np.zeros_like( |
|
|
|
board |
|
|
|
) # Clear the board and continue or call sys.exit() to end |
|
|
|
|
|
|
|
def update_score(score, cleared_rows): |
|
|
|
return score + cleared_rows |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
score = 0 |
|
|
|
board = np.zeros((20, 10), dtype=int) |
|
|
|
piece_types = list(PIECES.keys()) |
|
|
|
current_piece = PIECES[np.random.choice(piece_types)] |
|
|
@ -89,7 +95,7 @@ def main(): |
|
|
|
auto_gravity = True # Auto-gravity enabled by default |
|
|
|
|
|
|
|
while True: |
|
|
|
display_board(board, current_piece, i, j) |
|
|
|
display_board(board, current_piece, i, j, score) |
|
|
|
if not check_placement(current_piece, board, *START_POS): |
|
|
|
board = game_over(board) |
|
|
|
continue |
|
|
|