public Dot move(String[] grid, int current_r, int current_c, Direction direct) {
        Dot newDot = null;

        newDot = new Dot();
        switch (direct) {
            case UP:
                newDot.rowNum = (current_r - 1);
                newDot.columnNum = current_c;
                break;
            case DOWN:
                newDot.rowNum = (current_r + 1);
                newDot.columnNum = current_c;
                break;
            case LEFT:
                newDot.rowNum = (current_r);
                newDot.columnNum = current_c - 1;
                break;
            case RIGHT:
                newDot.rowNum = (current_r);
                newDot.columnNum = current_c + 1;
                break;
        }

        if (newDot.rowNum < 0 || newDot.rowNum >= grid.length || newDot.columnNum < 0 || newDot.columnNum >= grid[0].length()) {
            throw new IllegalArgumentException();
        }

        newDot.aChar = grid[newDot.rowNum].charAt(newDot.columnNum);

        return newDot;
    }