public Fieldelements shoot(int posX, int posY) {
        Fieldelements status = setFieldStatus(posX, posY, Fieldelements.SHOT);
        switch (status) {
            case HIT:
                Fieldelements shipStatus;
                for (Ship ship : this.ships) {
                    shipStatus = ship.shoot(posX, posY);
                    if (Fieldelements.SUNK == shipStatus) {
                        int posXHelper = posX;
                        int posYHelper = posY;
                        for (int i = 0; i < ship.getLength(); i++) {
                            try {
                                Fieldelements oldstatus = getFieldStatus(posXHelper, posYHelper);
                                if (Fieldelements.SHIP == oldstatus || Fieldelements.HIT == oldstatus) {
                                    this.field.get(posXHelper).set(posYHelper, Fieldelements.SUNK);
                                }
                            } catch (IndexOutOfBoundsException ignore) {
                            }
                            if (Directionelements.HORIZONTAL == ship.getDirection()) {
                                posXHelper++;
                            } else {
                                posYHelper++;
                            }
                        }
                        break;
                    }
                    if (Fieldelements.ERROR != shipStatus) {
                        break;
                    }
                }
            default:
                return status;
        }
    }