public class MoveToCenter extends AbstractStrategy{ @Override protected boolean isTargetDestination() { var objParams = GetObjectParameters(); if (objParams == null ) { return false; } return Math.abs(objParams.ObjectMiddleHorizontal() - GetFieldWidth() / 2) <= GetStep() && Math.abs(objParams.ObjectMiddleVertical() - GetFieldHeight() / 2) <= GetStep(); } @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(); } } } }