From 0c0b4127374f9b5829894cc53777f9c13154dd2a Mon Sep 17 00:00:00 2001 From: "ns.potapov" Date: Sun, 8 Oct 2023 20:24:55 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20MoveToCenter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectStormtrooper/MoveToCenter.java | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 ProjectStormtrooper/MoveToCenter.java diff --git a/ProjectStormtrooper/MoveToCenter.java b/ProjectStormtrooper/MoveToCenter.java new file mode 100644 index 0000000..03e78b7 --- /dev/null +++ b/ProjectStormtrooper/MoveToCenter.java @@ -0,0 +1,37 @@ +package ProjectStormtrooper; + +public class MoveToCenter extends AbstractStrategy { + @Override + protected void MoveToTarget() { + var objParams = GetObjectParameters(); + if (objParams == null) { + return; + } + var diffX = objParams.ObjectMiddleHorizontal() - FieldWidth / 2; + if (Math.abs(diffX) > GetStep()) { + if (diffX > 0) { + MoveLeft(); + } else { + MoveRight(); + } + } + var diffY = objParams.ObjectMiddleVertical() - FieldHeight / 2; + if (Math.abs(diffY) > GetStep()) { + if (diffY > 0) { + MoveUp(); + } else { + MoveDown(); + } + } + } + + @Override + protected boolean IsTargetDestination() { + var objParams = GetObjectParameters(); + if (objParams == null) { + return false; + } + return objParams.ObjectMiddleHorizontal() <= FieldWidth / 2 && objParams.ObjectMiddleHorizontal() + GetStep() >= FieldWidth / 2 && + objParams.ObjectMiddleVertical() <= FieldHeight / 2 && objParams.ObjectMiddleVertical() + GetStep() >= FieldHeight / 2; + } +}