From 39ce81d82cbf069e14111aecfbb7957ee7257faa Mon Sep 17 00:00:00 2001 From: Nimrod Abramovich <grumpydormin@gmail.com> Date: Wed, 26 Feb 2020 14:20:04 +0000 Subject: [PATCH] Cage updated to include info --- bin/coursework/Cage.class | Bin 1432 -> 2486 bytes bin/coursework/Main.class | Bin 10433 -> 11417 bytes src/coursework/Cage.java | 51 ++++++++++++++++----- src/coursework/Main.java | 92 ++++++++++++++++++++++++++------------ 4 files changed, 103 insertions(+), 40 deletions(-) diff --git a/bin/coursework/Cage.class b/bin/coursework/Cage.class index a752da327002b690e4bfc92e5e9d2519376df0d7..870cdad95fc9207280743efe057850ed5f5306a1 100644 GIT binary patch literal 2486 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 Kj0_E66B+?cb^jay delta 1034 zcmdlcJcFC-)W2Q(7#J8#7(6F(Su!z4Pjm?jV6(~0%Pg^DWMI>Xj`q|HV`N})&QD3@ zVqj(v<YC}t5MpFt*3b;&WME_v;bCB9VB=yCV~}8H5NBlIPtGqbDo!oWFUr>UP0Y;W zVUT2ynrz3YFC)Xlz|FwJ#lXlQ$HO2GGJ`XzG&3i~IWawT@(V^6D`o~&9tJfAbw&oZ z)WXuloMJ`>Q4OE0#Ii*FoW#6zegCAa)Z`Lt%_uep1_<C}&}PtOXV94($t26H$DlvC zl1W?MkinRp!HAJT5XmLMg{6r_sXPoO45pJ0Gnv#IGMMu)STL9}GVm6smiVNml?0a* z<!7gIF&Hvf@i16}WcZ6yOPumcO7e3Na<)7Sb|5*P;?$Cm`~rvsBLiEaXI@Hb1tSAf zv?n72TN0GVUX)+%l9`sq$iSYQp95j>2A3oz^Jn`e7K9`w<)pGRu(2~ZOjc)AVq}@@ z#j0G-$iU0M$H2(I&%nSC$-u<G#K6EHs<oX#KudcogRs^P2GOky(puXXWH&M}FfcJF zFfcHPF|aZ)Fz_(2Fz_;PGVn17Fz_>oFbFUxg5|&lFeou7gM&;I6k80842+-{fLO!$ zg@J{En}LDhvDOxbdf`YbmVI{2w#ykVNwUZo`Dkrn5RSCs*k{JhY{s^nVY4KMD4UTL ztF|QTHU^bh3=6bb^dwnX^is??wVCxKS()`x%(z53nHDf8h;q$hkk;D5Ag#@;XQa)d zXC%U)v57%z8-u}ehD=dT7OYC@p=!*QGq{Oz&SFp$<ziZZ-5AT|49XxSa-v);3m7D@ z*<{ng#wf}r%D(WwPYV;HjO@by`k-KA1_zrTgD?XFgD`_Ig9w8bgD8VBgBXKtJ%c!d zJA)KM5Q8*BI)e;D7K1E9DT5qC7lS-QFM|TZ3<gDpwG2uO8yJ)sb~C6jTwoAkxWypM z@Q6VZ9Ns42xOfZ=Z()Yx4E78T42%p~49gfC85|f`8EhFQGdMADFmN)sGjuXIGjK3) zF}N@=FcdOy{Ab`RV_;<mMGqr8gDV5We+Cf-PId-Hb_O>_un2@?_|M?Rz>OphlV@aP bU{F%}&mfOg7t?<RP88!A7#ZBbsmKEWN4T;O diff --git a/bin/coursework/Main.class b/bin/coursework/Main.class index 5e29507a106c3cdfc1cc053e01c9b5fdfba7ce59..bd8e82f3de7abd33e65466a9ef376d862e3b6e08 100644 GIT binary patch literal 11417 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 literal 10433 zcmX^0Z`VEs1_l$x@9Ydrj12tA`K3k0spa`a+4{bTnR)CCEQ}0tS&3zdX%+g31qC^o z$%!SI`FZ+|2sR@Fzk86UOMHN9kh7~_h@-nJBLkxgBLlB<eqM1&VqQsDVoqr)oBaz0 zFkob0^kZaT^kimW02$7mUX+;<Tv(b|lv>QlAQ~O*gX9E=xHTgKSe0LCZc=JdF(ZRw zv=7ut#mT98srt$Jc_l^pIr<@~6(w$&sW~Yy9sZ>yIhlE>j0|$98j3R#3sUuiQj<#( z^U`xttr;0u!6q>>h@dJA2AOZo$iSXi9G;nyTExh}7{$oIQBagxmYH8#%*eoDlbn;8 zmsw)R$iS?j8OF%K;+&t7%Fe*Y$-u}U%frCSz{kkI?~|FA3UPf%Vp2{jBZH7nesW?? zSYlBohz}KHvjLmL#lXy<#KWM#APF)<g@=KafsLI(4G|Aur(${<q*{ZAfuBJD#M0tn z5N8l#WMC=D$Sh`L5JV1EP|R90GH@2BmXsE_7iFd}GAL+hqWU~1u`<83L?0v@keHWh z&CX!J$RL9f>}X2381xyGI2nu?OxYPs7#W12YSUBmb5l!-D)j^Mi+LE#7|a<N*g)yT zHHeWx6lN!~B5ROAmOKnr4AzVcJjJOcjyaj>dAX^1C5#Lb8d!B`hJn0n%fledAi~99 z&)~?;;K0Zr1a$!<yueY(!{Ef=%*eozo>~%~nNpGgjx`rH2LW)>WZ+_8WN_zU@L=#{ zWZ+FqNeRh^`Ja)&5pFfaJT%{1yLfsM2tts(MVTp};KWFg=%z6;uoP!jr7|)wW->A` zW-&7G2A3ozXZt1=fD;SIp@BRMK@7o+4E*qDgk%>+1~Cm6P2~87h+Bg+h4L_jF@!TR z2*EYMGYunyGDsgvpkd}LkRg#g3{ecxj10VRLp+@FD;OF4HL%zUi!ey2VH$`%&_D)S zb1}p+#IrNRF)|2Z6bd{H2@Hv#5KS#{FUl`10QnltD6lv<H6`;fq%fp1GB78mq#!3E zh@1TKQ&O!xJvGBX_NDVMWH4khGVr9QmcR=LEcpYy2;pMLX2@k{$U)B}XzF+v@)#r; z8Q4qm-HP%-DVnVqT=p?C2xAF5Mh4CjSeeGipg<@n85vkIl0Xq5g{l&oxWHk`$iSKo z2`{vw4iZ}I3>AzF5-4c^NjDcmIVg))Gt{y()G#v0qNvNvD=00|_suUYPIWCy%`4$y zsAH&SWZ?Dn4-IyWclPmg_I7n)WRQTlEfu6lAFMQ_vLMx3h=GBjk%ys)p_!3^Eh8~6 z1yoQvq9iGB!G$H9;1Q2xrU%%BB5RPFTX`7T7}^;b_!Co7z!pL!85zvrxf)3;*g067 z3Dso{N-5<GojeR(4Beo*DYe8oBQqzZC^e6fK^0MuCg<nmq$Y!^%VK^1q~g?~GEiaf zlUZD1&CSru(9h1$$H<@v4MW_DL1}jaBZDZ!rTRIEdFlH8Nm;4MCDxizAm3RsG6=wP zBD~5|#K_EONzt0kK?PRqWiw0%)i^U48Q3*kTwGir1?nsw20;cPPKG%Q^Vk{YqNj_3 z#LT=Bedqj~{30HP`3wsf8Cacs9G$%x8PJj+l0s`xHd(~Ou$W;9r2YvmDay}IWn_?r z_%5wNACe~_dICUJSc4ohhhZ5H!*Y-%+#x}Ze!&5bL9TuwAk$XzFsuTZ#$KFS;+C0{ z!{z|-6az?d9S_5Lh7F7ie8s6H5UZfYK8uD6C>FCBHt{fQ2IWY$l6<Gc<ZMt8uoV;( z8`vCJAO?YicJeUnV%QC-jzaPaAVx7V$Z5F1k_oc2!C?YUC9w>9c^LMAbb?B0r~HzV z{9K4;kf{fF7!HEuK;@`UY8upqAeqBF3`amRAa@64rf0yVR2h`G7*rXK^DvwM`HQ<a zwZu0w59}#6`v))wt1_J7VK~chj*$VRAfPBUEf`#xuxfy!7G!`W2g5~123g&-3f;8) z<kDi@WKcX>DU=i?<`owt7NzEuScBAE=3%(PaFvmP0~~;rpe%`!5Q9sKGV{`{HN!X< zt}`+yg3JSzSh`916}n0JMJcI8sAfWfu(Ti~zW`JmF*3*?@(Uygk%}8@P;25g55pZ$ zqk-4SKP1H8Hy+Y<0HynTJPh|ifxrcFTR~!SW?niw!$U>}X=s*$m<OwIoJvbd^7A+t z9y2ls_~a+1D5NLmrYh(vq-Ex$axpw$cnXU3s~il^L3M3Lez`(!W^qYkc4{#P!%Id6 zF=Q<uA1Z*0J2r<*SeQRxc+11^4&)wCn*|i+;8+0}{eg$!BdFN{s#D++><ph783a+B z3aW@eCBs)9hHnht85!6TQ&JprazIrZq{WMt`N8!FG#rI;@)J|s6LVADGILTPer05k zMNOTkL17JQ1!Uxx`$GK*(<BZv3Dh$11QqHq8BiK7Er6tAQ0#%C=RXf411Ng9Li_`u zal^sL#K^$F&d7pZ7iQ)rrl;zAg2=GU)N*!4HuN$DNd*TZ2P1<dD0ZyCI*Rp6^HTET zGn4c4^a}FQxfod)o^mlVGjj7VC@}J1mLNz*fwSTRMm~^AentijNLd33OlSf|4Jc4V zfYLOhAes}3Qjwg%!6?kg!0Mcnnpni<-~>+xjN&|u5}<Sd%GRLh_DBWgU^a(1m=Z=t z86HMiMma_X(PWTrNccMEWF}{WYbQ{11JyxjF$d~sa3z6D6Hq)bGH`*y24V~&0~g4Z zFb+484MGfzj4C_~O^m9H40@OqEB;#a0i!w(qXwfUq)hS8a|G9HpfV8VRHPadQByK9 zh!&S5rl*24Lr^NHQ495>DI^-wD)hk$^n*dltYL;hGB30+fVILw5y_~_sL#%*ht#|W z>4WIzVKiVgWMtqi2es`3it-Cmi%KdP84M6*Oj2rMUa@`wR7yW6H8I6MFQ?KazceW) z6{f>lh=GaGn1|7X(Ug&aJvk#WFFiGdks$*!$l$I;xPg!lU|Jw9DFgM5^_{_1fLaEr zd8tL#T#V+7mh6lcj0`%^@&TflfU|iRtr$T)-^7#@m{E)jYVc5on1R(oP<mno#{zN> z7|BnJ3}RquNK!_MMlMEOMh6~7M^LcyWq=bpEEI(pm>G>389=3TX@PTMdTKE{qbuqV z14xve(VdZjDcX~Z(S^|yltaB38Q3(Uqdh^6;wl2C7*PC!L}4uxMn4_~Q3f$C27AT; z9>zdW*~*!oS^{w$7eh8<Fb`u0C<}tBEpW;M35M}7hJyq_{a%>TSjI>m#wd^|H^eGX zSG^eANX|@&fYOnS44j~03b09x3><l><=`<5Mh4Cz*cbvM17A9*D}pqbA+Di`V>km8 z)<q?Z4C3&}0f#Om5nF>j?pl$YS^#c4vNNVZd()5-3ogUXn1Nn?Li0<QQ+@>(V>*Kp zn?oz4Q2+|6Tu|udF)~OYYy}N(=m$WmdvMc$F`eNaJ7XaugBUdB!F%SOdBv$E#cU2H z&{B-CfMGfpV>)9Q4`VrF1tgvW5>rw#^U@g^q~TVe=?CZFbOuW<21dqe9tK?oJrJvw zhtZiq62z+KVYtC?6U1udVff2%6Xc6d5VwVgQHxO<#A@SVv}4p}b7(pMb_o}wF2iw9 zGVJDI>;Xk2sQUHI%!9@-qb_3~4`V;$1ZW!u<YSb82MOqd2M53<{v<{Q4&TI*jFkNB zQjn=rco?U`8bBeLB{``e!Rb7VGeC_-mg0>3az+N0GH~}7t=Wqd7uJjnEV+r9dFVAc zwDJM9L>U?9@i5M3oWsb#mXlbTmz=@Kz>-*$Ud+fKj9m9abucn;<Rs=Mr6j5tFfy2; zluOXgKCGC5l%wFr3R2$;(xzry%EPz})TZY2@pShHaq<au<z$${xPpgqB}kMt+`}^j zG?<sl$RJO^JcNS`k*i`zl>n(Kz{Nf&{uxvm*YhxL0EH^3(GF^6AoUqAwXid8Mx=8L zX?6wygylwz47Kp2hn%NSoezx~P_Y6Uje!^0$VDWg#|F;p5H*k-2pP)5BBB|_#khlU z7dzulMg{>;20~WP!?+t%P;sY#>l(13ptKag#h}l)kB4zTNRlf(wZsQJ@)iLSKFGs( z2vs-|G&tr6$_7Vy7`+*N7#W!JlZqJ`RA3&&=LJRvw)~uwu*4kD03^EetQi^DAO#z^ zwTnDFSy_+@9(7`5uq4778*Q*6WUpJ>StH`e7?fij85y{O^Gl18!R=K>22N1dUJv9Z zMg{?={QQ#QlA^={-_(+f{FGuY#><RX*%_}eGAMymKupfeE6dML)%O8s1K-q=#I(fZ zlKi4d9>!~o*BKeOa}h#}3}+yT0!1gpa7as~Sj8tlKfAO5IZmNj4aqZ5D<K*Yg9KPi z#VZN164@$DgCT7(6qB73b8><+OH!@**%&V&7h#Yr0n1(jjNsz)4iDoZ#>M>XjJFvX zlpwwbwY0#c9hTBSfbkww<0Br%HH>Td*%==SFs@}}@P_Nfm$Hxo2|6@^DWVxB!1xrD za$oQ;Ze`rY&(8Rq4CC?SJpsm7P#fOyFrEe5@K%8F6(a+WXI@@vk#kOBaWSY7@|lrA z6(b!%A{7!fu++fL_!T<pjuH_lN*Nj0AW4Tok%5r`G^xSCAOsq+XJBMtXJBApV&Gtq zV&G!nhVywCxIohaU^#vU(8x0rXqW|DnF%w9fW<`_#K5#T187uCjDdqef<cmjkwJ=q zfkBIb39Ocjo&6|-G}C4VnT=qzatsU%Yz&MH3=B#P@?a4L21d{{0#siJ12b4wN^3iV zqLv5)$5sYqEdhbO460ih)U_D5GH4>q5o2IwU|^7CU|~>T;AT)}5MfYfkYtbro67?+ zg+ZG^2W*QjgC5j|D-3K5YzzzxUb`9eBeydc`e<)rFxtjop|yp<W*dW@2m?p92!l($ zC$kyLas~xvGuGt{f?C=dqAa4U+Zo(^T38uHS=kr<f8WBwD9XaV@c#qt4Gatn%nTr( zsWEVZ{m#Ll&A`u~!ywOKz@W-t$e_(	+o?$Y9T4z~I4P3U;9h*!5me7jiH-F?ca} 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 diff --git a/src/coursework/Cage.java b/src/coursework/Cage.java index 9427afa..a37ce86 100644 --- a/src/coursework/Cage.java +++ b/src/coursework/Cage.java @@ -1,43 +1,72 @@ package coursework; +import java.util.Arrays; + +import javafx.scene.control.Label; import javafx.scene.paint.Color; public class Cage { - private int[][] squareIds; + private int[] squareIds; private int value; private String operator; private Square[][] gridSquares; + private Label[][] cageLabels; - public Cage(int[][] squareIds) { + public Cage(int[] squareIds, int value, String operator) { this.squareIds = squareIds; + this.value = value; + this.operator = operator; this.gridSquares = Main.getGridSquares(); + this.cageLabels = Main.getCageLabels(); buildCage(); + setCageInfo(); } public void buildCage() { - for (int aIndex[] : squareIds) { - for (int bIndex[] : squareIds) { - if (!aIndex.equals(bIndex)) { - int rowDiff = aIndex[1] - bIndex[1]; - int colDiff = aIndex[0] - bIndex[0]; + if (squareIds.length == 1) + return; + for (int idA : squareIds) { + for (int idB : squareIds) { + if (idA != idB) { + int[] aCoord = idToCoord(idA); + int[] bCoord = idToCoord(idB); + + int rowDiff = aCoord[1] - bCoord[1]; + int colDiff = aCoord[0] - bCoord[0]; + final double WIDTH = 2; if (rowDiff == -1 && colDiff == 0) { - gridSquares[aIndex[0]][aIndex[1]].setRightStroke(2, Color.LIGHTGREY); + gridSquares[aCoord[0]][aCoord[1]].setRightStroke(WIDTH, Color.LIGHTGREY); } else if (rowDiff == 1 && colDiff == 0) { - gridSquares[aIndex[0]][aIndex[1]].setLeftStroke(2, Color.LIGHTGREY); + gridSquares[aCoord[0]][aCoord[1]].setLeftStroke(WIDTH, Color.LIGHTGREY); } else if (rowDiff == 0 && colDiff == -1) { - gridSquares[aIndex[0]][aIndex[1]].setBottomStroke(2, Color.LIGHTGREY); + gridSquares[aCoord[0]][aCoord[1]].setBottomStroke(WIDTH, Color.LIGHTGREY); } else if (rowDiff == 0 && colDiff == 1) { - gridSquares[aIndex[0]][aIndex[1]].setTopStroke(2, Color.LIGHTGREY); + gridSquares[aCoord[0]][aCoord[1]].setTopStroke(WIDTH, Color.LIGHTGREY); } } } } } + + public void setCageInfo() { + if (squareIds.length > 1) + Arrays.sort(squareIds); + int minVal = squareIds[0]; + cageLabels[minVal][0].setText(value + " " + operator); + cageLabels[minVal][1].setText(value + " " + operator); + cageLabels[minVal][1].setVisible(false); + } + + public static int[] idToCoord(int id) { + int row = id / Main.N; + int col = id % Main.N; + return new int[] {row, col}; + } } \ No newline at end of file diff --git a/src/coursework/Main.java b/src/coursework/Main.java index 716f236..06dabe9 100644 --- a/src/coursework/Main.java +++ b/src/coursework/Main.java @@ -8,10 +8,12 @@ import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.Button; +import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; +import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; @@ -28,15 +30,16 @@ import javafx.stage.Stage; public class Main extends Application { + final static public int N = 6; final private double GRID_PERCENTAGE = 0.75; - final static private int N = 4; 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 Rectangle previous = null; + private HBox previous = null; private GridPane setupGrid() { GridPane gridPane = new GridPane(); @@ -56,8 +59,7 @@ public class Main extends Application { private GridPane addToGridPane(GridPane gridPane, double size, int i, int j) { Square square = setupGridSquare(size); TextField textField = setupGridTextField(size); - HBox hbox = setupGridHBox(square, textField); - + HBox hbox = setupGridHBox(square, textField, i, j); Group group = square.getGroup(); gridSquares[i][j] = square; @@ -70,23 +72,27 @@ public class Main extends Application { return gridPane; } - private HBox setupGridHBox(Square square, TextField textField) { + private HBox setupGridHBox(Square square, TextField textField, int i, int j) { HBox hbox = new HBox(); - hbox.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { - square.getRectangle().setFill(Color.LIGHTBLUE); - if (previous != null) { - previous.setFill(Color.WHITE); - } - previous = square.getRectangle(); - }); + VBox vbox = new VBox(); + Label cageInfoLabel = new Label(""); + Label balanceLabel = new Label(""); - hbox.getChildren().add(textField); + cageLabels[i*N + j][0] = cageInfoLabel; + cageLabels[i*N + j][1] = balanceLabel; + + vbox.getChildren().addAll(cageInfoLabel, textField, balanceLabel); + vbox.setAlignment(Pos.CENTER); + hbox.getChildren().add(vbox); hbox.setAlignment(Pos.CENTER); + hboxClickSquareEvent(hbox); + return hbox; + } private Rectangle setupGridOutline(double size) { - gridOutline = new Rectangle(size*N + N*2.5, size*N + N*2.5, size*N + N*2.5, size*N + N*2.5); + gridOutline = new Rectangle(size*N + N*3, size*N + N*3, size*N + N*3, size*N + N*3); gridOutline.setStroke(Color.BLACK); gridOutline.setFill(Color.TRANSPARENT); gridOutline.setStrokeWidth(2); @@ -96,10 +102,10 @@ public class Main extends Application { private Square setupGridSquare(double size) { Square square = new Square(size); - square.setTopStroke(2.5, Color.BLACK); - square.setBottomStroke(2.5, Color.BLACK); - square.setLeftStroke(2.5, Color.BLACK); - square.setRightStroke(2.5, Color.BLACK); + square.setTopStroke(3, Color.BLACK); + square.setBottomStroke(3, Color.BLACK); + square.setLeftStroke(3, Color.BLACK); + square.setRightStroke(3, Color.BLACK); return square; } @@ -125,6 +131,11 @@ public class Main extends Application { loadGameTextInputButton.setPrefWidth(loadGameFileButton.getPrefWidth()); topHBox.getChildren().addAll(loadGameFileButton, showMistakesButton, loadGameTextInputButton); + + loadGameFileButton.setOnAction(e -> { + + }); + return topHBox; } @@ -144,6 +155,16 @@ public class Main extends Application { return bottomHBox; } + private void hboxClickSquareEvent(HBox hbox) { + hbox.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { + if (previous != null) { + previous.setStyle("-fx-border-width:0px;"); + } + hbox.setStyle("-fx-border-color:red; -fx-border-width:2px;"); + previous = hbox; + }); + } + private void clearButtonClickEvent(Button clearButton) { clearButton.setOnAction(e -> { for (TextField textField : gridNumbers) { @@ -171,13 +192,22 @@ public class Main extends Application { } private void setupCages() { - new Cage(new int[][] {{0,0}, {1,0}}); - new Cage(new int[][] {{2,0}, {1,1}, {2,1}}); - new Cage(new int[][] {{3,0}, {3,1}}); - new Cage(new int[][] {{0,1}, {0,2}}); - new Cage(new int[][] {{1,2}}); - new Cage(new int[][] {{0,3},{1,3}}); - new Cage(new int[][] {{2,2},{2,3},{3,2},{3,3}}); + 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) { @@ -190,14 +220,18 @@ public class Main extends Application { gridSquares[i][j].resizeLines(newValue * GRID_PERCENTAGE / N); } } - gridOutline.setWidth(newValue * GRID_PERCENTAGE + N*2.5); - gridOutline.setHeight(newValue * GRID_PERCENTAGE + N*2.5); + //gridOutline.setWidth(newValue * GRID_PERCENTAGE + N*2.5); + //gridOutline.setHeight(newValue * GRID_PERCENTAGE + N*2.5); } public static Square[][] getGridSquares() { return gridSquares; } + public static Label[][] getCageLabels() { + return cageLabels; + } + @Override public void start(Stage stage) throws Exception { VBox vBox = new VBox(); @@ -218,8 +252,8 @@ public class Main extends Application { stageWidthResizeEvent(stage, gridPane); stageHeightResizeEvent(stage, gridPane); - stage.setMinWidth(600); - stage.setMinHeight(600); + stage.setMinWidth(400 + 50*N); + stage.setMinHeight(400 + 50*N); stage.setScene(scene); stage.setTitle("Mathdoku"); stage.show(); -- GitLab