def go(self, direction: str) -> Board: current_zero_row = self.row_containing_blank_piece() current_zero_column = self.column_containing_blank_piece() if self.is_move_possible(direction) is False: raise ValueError(f'Moving {direction} Not possible') blocks = _cpy(self.blocks) if direction == 'UP': x_position = current_zero_row - 1 y_position = current_zero_column elif direction == 'DOWN': x_position = current_zero_row + 1 y_position = current_zero_column elif direction == 'LEFT': x_position = current_zero_row y_position = current_zero_column - 1 elif direction == 'RIGHT': x_position = current_zero_row y_position = current_zero_column + 1 swapping_piece = blocks[x_position][y_position] blocks[x_position][y_position] = 0 blocks[current_zero_row][current_zero_column] = swapping_piece return Board(blocks)
def __init__(self, win): assert isinstance(win, SegmentsGenerator) self._win = _cpy(win) self._win.init_segmentation()