def _move_cell(self, cell: Cell): # find possible directions possible_directions = Direction.all_directions() for c in self.__cells: if c.column - cell.column == 0: if c.row - cell.row == 1: possible_directions.remove(Direction.DOWN) elif c.row - cell.row == -1: possible_directions.remove(Direction.UP) elif c.row - cell.row == 0: if c.column - cell.column == 1: possible_directions.remove(Direction.RIGHT) elif c.column - cell.column == -1: possible_directions.remove(Direction.LEFT) if cell.column == self._size - 1: possible_directions.remove(Direction.RIGHT) if cell.column == 0: possible_directions.remove(Direction.LEFT) if cell.row == self._size - 1: possible_directions.remove(Direction.DOWN) if cell.row == 0: possible_directions.remove(Direction.UP) # move if possible if len(possible_directions) == 0: return cell.move(list(possible_directions)[0])