From 7e33b43c643a1987b03f603bb0bdcc2128ae7f22 Mon Sep 17 00:00:00 2001 From: Wojtek Date: Sat, 7 Dec 2024 16:17:21 +0100 Subject: [PATCH 1/2] Initial commit. --- src/main/java/core/basesyntax/Robot.java | 4 ++++ src/main/java/core/basesyntax/RobotRoute.java | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/core/basesyntax/Robot.java b/src/main/java/core/basesyntax/Robot.java index 0a02f34d..9003c692 100644 --- a/src/main/java/core/basesyntax/Robot.java +++ b/src/main/java/core/basesyntax/Robot.java @@ -61,6 +61,10 @@ public void turnRight() { } } + public void initialDirection() { + direction = Direction.UP; + } + public void stepForward() { switch (direction) { case UP: diff --git a/src/main/java/core/basesyntax/RobotRoute.java b/src/main/java/core/basesyntax/RobotRoute.java index 351ca4b9..6a0e4c58 100644 --- a/src/main/java/core/basesyntax/RobotRoute.java +++ b/src/main/java/core/basesyntax/RobotRoute.java @@ -3,5 +3,26 @@ public class RobotRoute { public void moveRobot(Robot robot, int toX, int toY) { //write your solution here + robot.initialDirection(); + int xSteps = toX - robot.getX(); + int ySteps = toY - robot.getY(); + if (toX < 0) { + robot.turnLeft(); + } + if (toX > 0) { + robot.turnRight(); + } + if (xSteps < 0) xSteps *= -1; + for (int i = 0; i < xSteps; i++) robot.stepForward(); + if (toY > 0 && ySteps < 0 && toX > 0 || toY > 0 && ySteps > 0 && toX < 0 || + toY < 0 && ySteps > 0 && toX < 0 || toY < 0 && ySteps < 0 && toX > 0) { + robot.turnRight(); + } + if (toY > 0 && ySteps > 0 && toX > 0 || toY > 0 && ySteps < 0 && toX < 0 || + toY < 0 && ySteps < 0 && toX < 0 || toY < 0 && ySteps > 0 && toX > 0) { + robot.turnLeft(); + } + if (ySteps < 0) ySteps *= -1; + for (int i = 0; i < ySteps; i++) robot.stepForward(); } } From 56d56318b14265009110fc79d96bcfcaccd3415a Mon Sep 17 00:00:00 2001 From: Wojtek Date: Sat, 7 Dec 2024 18:09:46 +0100 Subject: [PATCH 2/2] Error fixed. --- src/main/java/core/basesyntax/Robot.java | 2 +- src/main/java/core/basesyntax/RobotRoute.java | 51 +++++++++++-------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/main/java/core/basesyntax/Robot.java b/src/main/java/core/basesyntax/Robot.java index 9003c692..b8c18279 100644 --- a/src/main/java/core/basesyntax/Robot.java +++ b/src/main/java/core/basesyntax/Robot.java @@ -62,7 +62,7 @@ public void turnRight() { } public void initialDirection() { - direction = Direction.UP; + direction = Direction.UP; } public void stepForward() { diff --git a/src/main/java/core/basesyntax/RobotRoute.java b/src/main/java/core/basesyntax/RobotRoute.java index 6a0e4c58..a6e17774 100644 --- a/src/main/java/core/basesyntax/RobotRoute.java +++ b/src/main/java/core/basesyntax/RobotRoute.java @@ -2,27 +2,34 @@ public class RobotRoute { public void moveRobot(Robot robot, int toX, int toY) { - //write your solution here - robot.initialDirection(); - int xSteps = toX - robot.getX(); - int ySteps = toY - robot.getY(); - if (toX < 0) { - robot.turnLeft(); - } - if (toX > 0) { - robot.turnRight(); - } - if (xSteps < 0) xSteps *= -1; - for (int i = 0; i < xSteps; i++) robot.stepForward(); - if (toY > 0 && ySteps < 0 && toX > 0 || toY > 0 && ySteps > 0 && toX < 0 || - toY < 0 && ySteps > 0 && toX < 0 || toY < 0 && ySteps < 0 && toX > 0) { - robot.turnRight(); - } - if (toY > 0 && ySteps > 0 && toX > 0 || toY > 0 && ySteps < 0 && toX < 0 || - toY < 0 && ySteps < 0 && toX < 0 || toY < 0 && ySteps > 0 && toX > 0) { - robot.turnLeft(); - } - if (ySteps < 0) ySteps *= -1; - for (int i = 0; i < ySteps; i++) robot.stepForward(); + robot.initialDirection(); + int stepsX = toX - robot.getX(); + if (toX < 0) { + robot.turnLeft(); + } + if (toX > 0) { + robot.turnRight(); + } + if (stepsX < 0) { + stepsX *= -1; + } + for (int i = 0; i < stepsX; i++) { + robot.stepForward(); + } + int stepsY = toY - robot.getY(); + if (toY > 0 && stepsY < 0 && toX > 0 || toY > 0 && stepsY > 0 && toX < 0 + || toY < 0 && stepsY > 0 && toX < 0 || toY < 0 && stepsY < 0 && toX > 0) { + robot.turnRight(); + } + if (toY > 0 && stepsY > 0 && toX > 0 || toY > 0 && stepsY < 0 && toX < 0 + || toY < 0 && stepsY < 0 && toX < 0 || toY < 0 && stepsY > 0 && toX > 0) { + robot.turnLeft(); + } + if (stepsY < 0) { + stepsY *= -1; + } + for (int i = 0; i < stepsY; i++) { + robot.stepForward(); + } } }