Untitled

 avatar
unknown
plain_text
a year ago
2.1 kB
6
Indexable
import os
import random
import time

# Set up the game board
width = 10
height = 20
board = [[' ' for _ in range(width)] for _ in range(height)]

def print_board():
    os.system('cls' if os.name == 'nt' else 'clear')
    for row in board:
        print(''.join(row))

def check_collision(piece, x, y):
    for i in range(len(piece)):
        for j in range(len(piece[0])):
            if piece[i][j] == '[]' and (y + i >= height or x + j < 0 or x + j >= width or board[y + i][x + j] != ' '):
                return True
    return False

def merge_piece(piece, x, y):
    for i in range(len(piece)):
        for j in range(len(piece[0])):
            if piece[i][j] == '[]':
                board[y + i][x + j] = piece[i][j]

def clear_lines():
    global board
    new_board = [row for row in board if ' ' in row]
    lines_cleared = height - len(new_board)
    board = [[' ' for _ in range(width)] for _ in range(lines_cleared)] + new_board

def get_random_piece():
    pieces = [
        [['[]', '[]'], ['[]', '[]']],
        [['[]', '[]', '[]'], ['  ', '[]', '  ']],
        [['  ', '[]', '  '], ['[]', '[]', '[]']],
        [['[]', '  ', '  '], ['[]', '[]', '[]']],
        [['  ', '[]'], ['[]', '[]'], ['[]', '  ']],
        [['[]', '  '], ['[]', '[]'], ['  ', '[]']],
        [['   ', '   ', '[][]'], ['   ', '[][]', '   ']],
    ]
    return random.choice(pieces)

def rotate_piece(piece):
    return [list(row) for row in zip(*piece[::-1])]

def main():
    current_piece = get_random_piece()
    x, y = width // 2 - len(current_piece[0]) // 2, 0
    while True:
        print_board()
        time.sleep(0.5)
        
        new_x, new_y = x, y + 1
        if not check_collision(current_piece, new_x, new_y):
            x, y = new_x, new_y
        else:
            merge_piece(current_piece, x, y)
            clear_lines()
            current_piece = get_random_piece()
            x, y = width // 2 - len(current_piece[0]) // 2, 0
        
        if check_collision(current_piece, x, y):
            print_board()
            print("Game Over!")
            break

if __name__ == '__main__':
    main()
Editor is loading...
Leave a Comment