Код IT Загрузка примера кода…

Python main.py
import pygame
import settings as S
from game.tetrominoes import color_for_id


def board_origin():
    return S.MARGIN, S.MARGIN


def new_board():
    return [[0 for _ in range(S.COLS)] for _ in range(S.ROWS)]


def can_place(board, cells, ax, ay):
    for dx, dy in cells:
        col, row = ax + dx, ay + dy
        if col < 0 or col >= S.COLS or row >= S.ROWS:
            return False
        if row >= 0 and board[row][col]:
            return False
    return True


def lock_piece(board, piece):
    for col, row in piece.world_cells():
        if 0 <= row < S.ROWS and 0 <= col < S.COLS:
            board[row][col] = piece.color_id


def clear_lines(board):
    cleared = 0
    row = S.ROWS - 1
    while row >= 0:
        if all(board[row]):
            del board[row]
            board.insert(0, [0] * S.COLS)
            cleared += 1
        else:
            row -= 1
    return cleared


def draw_cell(surface, col, row, color, inset=1):
    ox, oy = board_origin()
    px = ox + col * S.CELL_SIZE
    py = oy + row * S.CELL_SIZE
    rect = pygame.Rect(
        px + inset, py + inset,
        S.CELL_SIZE - 2 * inset, S.CELL_SIZE - 2 * inset,
    )
    pygame.draw.rect(surface, color, rect, border_radius=3)
    highlight = tuple(min(255, c + 35) for c in color)
    pygame.draw.line(surface, highlight, rect.topleft, (rect.right - 1, rect.top), 1)


def draw_board(surface):
    ox, oy = board_origin()
    field = pygame.Rect(ox, oy, S.BOARD_W, S.BOARD_H)
    pygame.draw.rect(surface, S.COLOR_GRID, field)
    for col in range(S.COLS + 1):
        x = ox + col * S.CELL_SIZE
        pygame.draw.line(surface, S.COLOR_GRID_LINE, (x, oy), (x, oy + S.BOARD_H))
    for row in range(S.ROWS + 1):
        y = oy + row * S.CELL_SIZE
        pygame.draw.line(surface, S.COLOR_GRID_LINE, (ox, y), (ox + S.BOARD_W, y))
    pygame.draw.rect(surface, S.COLOR_GRID_LINE, field, width=2)


def draw_locked_blocks(surface, board):
    for row in range(S.ROWS):
        for col in range(S.COLS):
            if board[row][col]:
                draw_cell(surface, col, row, color_for_id(board[row][col]))


def draw_ghost(surface, piece, board):
    gy = piece.ghost_row(board)
    for dx, dy in piece.cells:
        draw_cell(surface, piece.x + dx, gy + dy, S.COLOR_GHOST, inset=3)
import pygame
import settings as S
from game.tetrominoes import color_for_id


def board_origin():
    return S.MARGIN, S.MARGIN


def new_board():
    return [[0 for _ in range(S.COLS)] for _ in range(S.ROWS)]


def can_place(board, cells, ax, ay):
    for dx, dy in cells:
        col, row = ax + dx, ay + dy
        if col < 0 or col >= S.COLS or row >= S.ROWS:
            return False
        if row >= 0 and board[row][col]:
            return False
    return True


def lock_piece(board, piece):
    for col, row in piece.world_cells():
        if 0 <= row < S.ROWS and 0 <= col < S.COLS:
            board[row][col] = piece.color_id


def clear_lines(board):
    cleared = 0
    row = S.ROWS - 1
    while row >= 0:
        if all(board[row]):
            del board[row]
            board.insert(0, [0] * S.COLS)
            cleared += 1
        else:
            row -= 1
    return cleared


def draw_cell(surface, col, row, color, inset=1):
    ox, oy = board_origin()
    px = ox + col * S.CELL_SIZE
    py = oy + row * S.CELL_SIZE
    rect = pygame.Rect(
        px + inset, py + inset,
        S.CELL_SIZE - 2 * inset, S.CELL_SIZE - 2 * inset,
    )
    pygame.draw.rect(surface, color, rect, border_radius=3)
    highlight = tuple(min(255, c + 35) for c in color)
    pygame.draw.line(surface, highlight, rect.topleft, (rect.right - 1, rect.top), 1)


def draw_board(surface):
    ox, oy = board_origin()
    field = pygame.Rect(ox, oy, S.BOARD_W, S.BOARD_H)
    pygame.draw.rect(surface, S.COLOR_GRID, field)
    for col in range(S.COLS + 1):
        x = ox + col * S.CELL_SIZE
        pygame.draw.line(surface, S.COLOR_GRID_LINE, (x, oy), (x, oy + S.BOARD_H))
    for row in range(S.ROWS + 1):
        y = oy + row * S.CELL_SIZE
        pygame.draw.line(surface, S.COLOR_GRID_LINE, (ox, y), (ox + S.BOARD_W, y))
    pygame.draw.rect(surface, S.COLOR_GRID_LINE, field, width=2)


def draw_locked_blocks(surface, board):
    for row in range(S.ROWS):
        for col in range(S.COLS):
            if board[row][col]:
                draw_cell(surface, col, row, color_for_id(board[row][col]))


def draw_ghost(surface, piece, board):
    gy = piece.ghost_row(board)
    for dx, dy in piece.cells:
        draw_cell(surface, piece.x + dx, gy + dy, S.COLOR_GHOST, inset=3)