diff --git a/bin/coursework/Main.class b/bin/coursework/Main.class index 7830df1d45c823fed8ad31465aa8df7bbcfe4d74..b35577c6853cb8148f2dffd91cc66fa48d8aab8f 100644 Binary files a/bin/coursework/Main.class and b/bin/coursework/Main.class differ diff --git a/bin/coursework/Square.class b/bin/coursework/Square.class index 1d14989e7a7311d4033786e3645886cf67215abd..ef7b1b6f1ab6cf0ef440306e32c5b7b42af133f4 100644 Binary files a/bin/coursework/Square.class and b/bin/coursework/Square.class differ diff --git a/src/coursework/Main.java b/src/coursework/Main.java index 656035c77a7801652a483eea42525f77cbbb0b1e..c55ff0dfc51c347620e5236ebbab9db99157ac30 100644 --- a/src/coursework/Main.java +++ b/src/coursework/Main.java @@ -1,6 +1,7 @@ package coursework; import java.io.BufferedReader; +import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; @@ -31,18 +32,21 @@ import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.Rectangle; import javafx.scene.shape.VLineTo; +import javafx.stage.FileChooser; import javafx.stage.Stage; public class Main extends Application { final static public int N = 6; + private Scene scene; + private Stage stage; + final private double GRID_PERCENTAGE = 0.75; private static Square[][] gridSquares = new Square[N][N]; private TextField[] gridNumbers = new TextField[N*N]; private static Label[][] cageLabels = new Label[N*N][2]; private Rectangle gridOutline; - Scene scene; private boolean isWider; private HBox previous = null; @@ -111,6 +115,7 @@ public class Main extends Application { square.setBottomStroke(3, Color.BLACK); square.setLeftStroke(3, Color.BLACK); square.setRightStroke(3, Color.BLACK); + square.resizeLines(size); return square; } @@ -137,14 +142,18 @@ public class Main extends Application { topHBox.getChildren().addAll(loadGameFileButton, showMistakesButton, loadGameTextInputButton); - final String PATH = "C:\\Java Eclipse Workspace\\Programming II Coursework\\mathdokuCage.txt"; loadGameFileButton.setOnAction(e -> { try { - BufferedReader file = new BufferedReader(new FileReader(PATH)); + FileChooser fileChooser = new FileChooser(); + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text Files", "*.txt")); + File selectedFile = fileChooser.showOpenDialog(stage); + BufferedReader file = new BufferedReader(new FileReader(selectedFile)); + String line; while ((line = file.readLine()) != null) { - System.out.println(line); + createNewCage(line); } + file.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { @@ -155,6 +164,24 @@ public class Main extends Application { return topHBox; } + private void createNewCage(String line) { + String[] splitLine = line.split(" "); + String[] shiftedIds = splitLine[1].split(","); + int[] ids = new int[shiftedIds.length]; + for (int i = 0; i < shiftedIds.length; i++) { + ids[i] = Integer.parseInt(shiftedIds[i]) - 1; + } + + if (splitLine[0].contains("÷")) { + splitLine[0] = splitLine[0].replace("÷", "�"); + } + + int value = Integer.parseInt(splitLine[0].substring(0, splitLine[0].length()- 1)); + String operator = splitLine[0].substring(splitLine[0].length() - 1); + + new Cage(ids, value, operator); + } + private HBox setupBottomHBox() { HBox bottomHBox = new HBox(); bottomHBox.setSpacing(10); @@ -207,25 +234,6 @@ public class Main extends Application { }); } - private void setupCages() { - new Cage(new int[] {0,6},11,"+"); - new Cage(new int[] {1,2},2,"�"); - new Cage(new int[] {3,9},20,"x"); - new Cage(new int[] {7,8},3,"-"); - new Cage(new int[] {4,5,11,17},6,"x"); - new Cage(new int[] {10, 16},3,"�"); - new Cage(new int[] {12,13,18,19},240,"x"); - new Cage(new int[] {14,15},6,"x"); - new Cage(new int[] {24,25},6,"x"); - new Cage(new int[] {20,26},6,"x"); - new Cage(new int[] {21,27,28},7,"+"); - new Cage(new int[] {22,23},30,"x"); - new Cage(new int[] {30,31,32},8,"+"); - new Cage(new int[] {33,34},2,"�"); - new Cage(new int[] {29,35},9,"+"); - - } - public void resizeGrid(double gridX, double gridY, double gridWidth) { double newValue = isWider ? scene.getHeight() : scene.getWidth(); for (int i = 0; i < N; i++) { @@ -258,8 +266,6 @@ public class Main extends Application { GridPane gridPane = setupGrid(); - setupCages(); - HBox topHBox = setupTopHBox(); HBox bottomHBox = setupBottomHBox(); diff --git a/src/coursework/Square.java b/src/coursework/Square.java index 4850fb9dcb5f2b6b8235510da2284a7b5a2ef7ff..c44142484257f3bdd77e279b62de530ba3b096b8 100644 --- a/src/coursework/Square.java +++ b/src/coursework/Square.java @@ -40,7 +40,8 @@ public class Square { } public void resizeLines(double newSize) { - top.setEndX(newSize); + top.setEndX(newSize ); + right.setStartX(newSize); right.setEndX(newSize); right.setEndY(newSize); @@ -48,6 +49,7 @@ public class Square { bottom.setStartX(newSize); bottom.setStartY(newSize); bottom.setEndY(newSize); + left.setStartY(newSize); }