コード例 #1
0
def create_board(position: Point, size: Size, columns: int, rows: int,
                 tile_size: Size) -> MatchThreeBoard:
    if columns < 0:
        raise AttributeError(f'The number of columns must be positive')
    if rows < 0:
        raise AttributeError(f'The number of rows must be positive')

    offset = Point(int((size.width - tile_size.width * columns) / 2),
                   int((size.height - tile_size.height * rows) / 2))
    board = MatchThreeBoard(position.to_tuple(), size.to_tuple())

    type_board: List[List[PieceType]] = []
    for index in range(0, columns):
        position = Point(index * tile_size.height, 0) + offset
        column = Column(position, Size(tile_size.width,
                                       tile_size.height * rows))
        for row in range(0, rows):
            if len(type_board) <= row:
                type_board.append([])
            position = Point(0, row * tile_size.width)
            piece = Piece(position.to_tuple(), tile_size.to_tuple())

            is_match = True
            new_piece = PieceType.BLACK
            while is_match:
                new_piece = PieceType.get_random_piece()
                is_match = src.piece.is_column_combination(board=type_board,
                                                           column=index,
                                                           row=row,
                                                           new_piece=new_piece)
                is_match = is_match or src.piece.is_row_combination(
                    board=type_board,
                    column=index,
                    row=row,
                    new_piece=new_piece)
            piece.sprite = GraphicResource(new_piece.value, tile_size)
            piece.type = new_piece
            type_board[row].append(new_piece)
            column.children.append(piece)

        board.children.append(column)
    return board
コード例 #2
0
 def _new_piece() -> Piece:
     piece = Piece((0, -Piece.PIECE_SIZE.height),
                   Piece.PIECE_SIZE.to_tuple())
     piece.type = PieceType.get_random_piece()
     return piece