Checking directional moves for a game
Put these

if (!field.checkIfBlocked(getfieldX() + 1, getfieldY())) {
    if (field.checkIfItem(getfieldX() + 1, getfieldY()).equals("friend")) {
           endMessage();
    }
    if (field.checkIfItem(getfieldX() + 1, getfieldY()).equals("bazooka")) {
        plusAmmo();
        LevelMaker.removeBazooka();
    }
    if (field.checkIfItem(getfieldX() + 1, getfieldY()).equals("helper")) {
        showShortestRoute();
    }


into a function.

Example:

public boolean performActions(int x, int y) {
    if(field.checkIfBlocked(x, y)
        return false;

    String status = field.checkIfItem(x, y);
    if(status.equals("friend")) {
        endMessage();
    } if(status.equals("bazooka")) {
        plusAmmo();
        LevelMaker.removeBazooka();
    } if(status.equals("helper")) {
        showShortestRoute();
    }   
    return true;
}


and checkAndMove() becomes:

public void checkAndMove(String direction) {
    switch (direction) {

        case "up":
            if (performActions(getfieldX(), getfieldY() - 1)) {

                // rest of the stuff
            }
            break;
        case "down":
            if (performActions(getfieldX(), getfieldY() + 1)) {

                // rest of the stuff
            }
            break;
        case "left":
            if (performActions(getfieldX() - 1, getfieldY())) {

                // rest of the stuff            
            }
            break;
        case "right":
            if (performActions(getfieldX() + 1, getfieldY())) {

                // rest of the stuff
            }
            break;
    }
}