public class MoveToBorder extends AbstractStrategy{ @Override protected boolean isTargetDestination() { var objParams = GetObjectParameters(); if (objParams == null ) { return false; } return objParams.RightBorder() <= GetFieldWidth() && objParams.RightBorder() + GetStep() >= GetFieldWidth()&& objParams.DownBorder() <= GetFieldHeight()&& objParams.DownBorder() + GetStep() >= GetFieldHeight(); } @Override protected void MoveToTarget() { var objParams = GetObjectParameters(); if(objParams == null) { return; } var diffX = objParams.RightBorder() - GetFieldWidth(); if (Math.abs(diffX) > GetStep()) { MoveRight(); } var diffY = objParams.DownBorder() - GetFieldHeight(); if (Math.abs(diffY) > GetStep()) { MoveDown(); } } }