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
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