diff --git a/src/main/java/hse/java/practice/task1/RubiksCube.java b/src/main/java/hse/java/practice/task1/RubiksCube.java index 2091b657..4c2d91c5 100644 --- a/src/main/java/hse/java/practice/task1/RubiksCube.java +++ b/src/main/java/hse/java/practice/task1/RubiksCube.java @@ -2,23 +2,12 @@ import java.util.Arrays; -/** - * Необходимо реализовать интерфейс Cube - * При повороте передней грани, меняются верх низ право и лево - */ -public class RubiksCube { +public class RubiksCube implements Cube { private static final int EDGES_COUNT = 6; private final Edge[] edges = new Edge[EDGES_COUNT]; - /** - * Создать валидный собранный кубик - * грани разместить по ордеру в енуме цветов - * грань 0 -> цвет 0 - * грань 1 -> цвет 1 - * ... - */ public RubiksCube() { CubeColor[] colors = CubeColor.values(); for (int i = 0; i < 6; i++) { @@ -26,10 +15,268 @@ public RubiksCube() { } } + public void rotateEdgeClockwise(int edge_num) { + CubeColor[][] parts_ = edges[edge_num].getParts(); + CubeColor temp1 = parts_[0][0]; + parts_[0][0] = parts_[2][0]; + parts_[2][0] = parts_[2][2]; + parts_[2][2] = parts_[0][2]; + parts_[0][2] = temp1; + CubeColor temp2 = parts_[0][1]; + parts_[0][1] = parts_[1][0]; + parts_[1][0] = parts_[2][1]; + parts_[2][1] = parts_[1][2]; + parts_[1][2] = temp2; + edges[edge_num].setParts(parts_); + } + + // Считаем, что 0 - верх, 1 - низ, 2 - лево, 3 - право, 4 - передняя, 5 - задняя + + @Override + public void up(RotateDirection direction) { + int k = 1; + if(direction == RotateDirection.COUNTERCLOCKWISE) { + k = 3; + } + for(int i = 0; i