private boolean tryMove(int positionY, int positionX) {

        // Prueft, ob das Feld in Richtung der uebergebenen Koordinaten frei ist und bewegt den Robot dorthin
        if (fieldFree(currentPosY + positionY, currentPosX + positionX)) {
            moveTo(currentPosY + positionY, currentPosX + positionX);
            return true;

        // Prueft, ob der Robot sich genau in der Zeile ueber den BoxingPlants befindet und noch im Feld-Array ist
        } else if (currentPosY + 1 < Simulation.N && field[currentPosY + 1][currentPosX].isBoxingPlant()) {

            // Wenn die BoxingPlant des Robot links ist, bewegt er sich nach links
            if (id - 1 < currentPosX && fieldFree(currentPosY, currentPosX - 1)) {
                moveTo(currentPosY, currentPosX - 1);
                return true;

            // Wenn die Boxing Plant des Robot rechts ist, bewegt er sich nach rechts
            } else if (id - 1 > currentPosX && fieldFree(currentPosY, currentPosX + 1)) {
                moveTo(currentPosY, currentPosX + 1);
                return true;
            }
        }

        // Wenn der Robot sich nicht auf die uebergebenen Koordinaten bewegen kann,
        // fuehrt er eine Ausweichroutine aus
        evade();

        return false;
    }