예제 #1
0
def read(file):

    with open(file, 'r') as f:
        if os.stat(file).st_size == 0:
            raise FileNotFoundError
        lines = f.readlines()
        B = [[None for x in range(16)] for y in range(9)]
        for line in lines:
            line = line.strip('\n')
            l = line.split(';')
            x = int(int(l[1]) / 100)
            y = int(int(l[2]) / 100)
            if l[0] == 'wall':
                e = Wall(x, y)
                e.up = to_rgb(l[3])
                e.left = to_rgb(l[4])
                e.down = to_rgb(l[5])
                e.right = to_rgb(l[6])
                e.color = to_rgb(l[7])
                B[x][y] = e
            if l[0] == 'piece':
                e = Piece(x, y)
                e.up = to_rgb(l[3])
                e.left = to_rgb(l[4])
                e.down = to_rgb(l[5])
                e.right = to_rgb(l[6])
                if int(l[7]) == 1:
                    e.upside = True
                B[x][y] = e
            if l[0] == 'blank':
                e = Blank(x, y)
                B[x][y] = e
    return B
예제 #2
0
    def gen_board(self):

        # fill board with elements

        board = [[None for x in range(16)] for y in range(9)]

        for cord in WALLS:
            board[cord[0]][cord[1]] = Wall(cord[0], cord[1])

        for cord in INNER:
            board[cord[0]][cord[1]] = Piece(cord[0], cord[1])

        for cord in UPSIDE:
            board[cord[0]][cord[1]].upside = True

        for x in board:
            for y in x:
                if type(y) == Piece and y.upside: y.up = NOGO
                if type(y) == Piece and not y.upside: y.down = NOGO

        for cord in SHELF:
            board[cord[0]][cord[1]] = Blank(cord[0], cord[1])

        # color elements

        for cord in SP_WALLS:
            e = board[cord[0]][cord[1]]
            col = random.choice(COL)
            e.left = col
            e.right = col
            board[cord[0]][cord[1] - 1].right = col
            board[cord[0]][cord[1] + 1].left = col

        for cord in INNER:
            e = board[cord[0]][cord[1]]
            col = [random.choice(COL) for i in range(4)]
            if e.up == BLANK:
                e.up = col[0]
                board[cord[0] - 1][cord[1]].down = col[0]
            if e.left == BLANK:
                e.left = col[1]
                board[cord[0]][cord[1] - 1].right = col[1]
            if e.down == BLANK:
                e.down = col[3]
                board[cord[0] + 1][cord[1]].up = col[3]
            if e.right == BLANK:
                e.right = col[2]
                board[cord[0]][cord[1] + 1].left = col[2]

        self.set_wall_color(board)

        self.__board = board