public class MoveToCenter extends AbstractStrategy { @Override protected boolean isTargetDestination() { var objParams = getObjectParameters(); if (objParams == null) { return false; } return objParams.objectMiddleHorizontal() <= getFieldWidth() / 2 && objParams.objectMiddleHorizontal() + getStep() >= getFieldWidth() / 2 && objParams.objectMiddleVertical() <= getFieldHeight() / 2 && objParams.objectMiddleVertical() + getStep() >= getFieldHeight() / 2; } @Override protected void moveToTarget() { var objParams = getObjectParameters(); if (objParams == null) { return; } var diffX = objParams.objectMiddleHorizontal() - getFieldWidth() / 2; if (Math.abs(diffX) > getStep()) { if (diffX > 0) { moveLeft(); } else { moveRight(); } } var diffY = objParams.objectMiddleVertical() - getFieldHeight() / 2; if (Math.abs(diffY) > getStep()) { if (diffY > 0) { moveUp(); } else { moveDown(); } } } }