From 2a2e1b751465aad15204f013a8d27cb62d4bc2e0 Mon Sep 17 00:00:00 2001
From: Nimrod Abramovich <grumpydormin@gmail.com>
Date: Wed, 11 Mar 2020 00:59:04 +0000
Subject: [PATCH] changed font resizing

---
 bin/coursework/Cage.class   | Bin 5196 -> 5207 bytes
 bin/coursework/Main.class   | Bin 24809 -> 24854 bytes
 bin/coursework/Square.class | Bin 2594 -> 2338 bytes
 src/coursework/Cage.java    |  39 +++++------
 src/coursework/Main.java    | 125 +++++++++++++++++++++---------------
 src/coursework/Square.java  |   9 ---
 6 files changed, 92 insertions(+), 81 deletions(-)

diff --git a/bin/coursework/Cage.class b/bin/coursework/Cage.class
index cf42078f2a031fef67fad643a5262c83393bbbda..f93cf6cd92afb4721aa5581143ec6bcac4afbf0f 100644
GIT binary patch
delta 3049
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
ACIA2c

delta 3115
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

diff --git a/bin/coursework/Main.class b/bin/coursework/Main.class
index 50b401ba1f7cfe454d8d9798e6a8f2ef4f8247e8..3d978104687481173a895a9c50c1b4e9b64dec3b 100644
GIT binary patch
delta 12426
zcmaEPka5}}My^x;cI{(eU@&3v*~pc`RWF#Fk(!(xo|)&IpO=zZl9`{!#lXmLk%!?D
z!(~PWKCrBFYEDkETWL-XBLlOBW)w)lRUU?GAO)fj1^Ic!B}Ivuc_pqzMfpX=oD4S@
zZm~1mWMmM?N-Rs%&q>Tn*AK2NE=kShVYtn3hmnCfzqEvrLDVM*ET5ULA5fH;R}x%O
zl$w}p&B1Vwk%2ujzf_?d<eUc#kJuR=GBOBbQOm>dnBfT{1A75TdrlrBgQ&*j3&tW`
zTny$6&v+P~GrXA0&8?`%!SITafq{$R4Z}NjhPSBBDk;j$OXp#D&+vhffi1PLG%;tg
z1Gl6yJA()#16OitP7cIRj0{ZCQH%^6sURPQCFZa*e4d=cCC~Pghv65)_sJ8v#4Z2u
zF#Kis&d9)9lwa-)4-!yt{pVq10LkzrC#I*ONHH?;Ffva*#-)(J$j-<h2=-!WNoJ0|
zM`CeCaB2w`BO8M=7b6=Z7Y`#h$cY@u`FSOYnR&$^L0%q)wG1D)7#JD(c^Cy41sNGQ
zl5<iMi-PjY85vkKJT=2Wa>6`}B8-BQcW}?EXO!h(lmn^b2CH+<&ne9X#W<q^52GST
zoIfKoJtHSGJ);C7$H>5$oSzexm{Xcs%+096sK(By%E-WnaHmgZaS0DY3!^$Xad?8%
zX!0;>F={h1aAcOG7A2PC7cnx3X=wUnC6?7E>VrM!36-$sX4GZWXJ^!7WDr6a36tev
zG+;DjWMIiltteq+5P=v0O-=quS*gh-*6fVNj12tA`K3k0spa`a+4|0j>8V_dMvSIB
zjAo4Hj0{}qsU;vW&y-?D1{Ng^&1g@Mot8X|R-p9Do{?DWms(K*(qhBIXv=VUvLLSr
z2Ul@wVo`F2^JH&cNi7yoq%kruWu`DP@Rud#WTt=&gaipYqYEfucychhF*0aOHq=&}
zyq1?++=GYF6O=AFic?F1ODc0xIT*be8Pve?9DIBNemo403{SWiJQ)Lc7y}uDCadvT
zaE363u``A;GAK^A;!|YhVGL)CnB2>!!WcDq6Q7FA9L6{v21mwtMh12b7Z(>7P}F)d
zCh{;QF(yyG$EVMh%EOq(m_AvUzmPMJv4EX1pOHag@;iPBRvyMe#-hoq_%+!|co<6=
z%O>CCHwmraVXR~<V`ShjPAzfDFDc2-4K69l&raoHFlMagVXOhk@fN3+_@t(RvL#fe
zj)$=xB*RynS`q|GBnVB7Jd90~lLWL_I(Qg6Cr=QN)#>G7>|^X_WZ*7NEeR+}O$*Mf
zN@ZkV)quF&oS~45!JILXgK;t=L&xOP3igvF1brDjCZ`FSv&`gSoHco&puFTf9>)0$
zix?TWKml2hn4FoH&d#`ykwJR$MMG&t4#vfd3<5s+i75){iMgo?x(aETIjLNX3mE;_
z8J96K$WFd!C^}h7h)Z$>BLi=6Mt-?MZf0>wVs>gV7voY!KMuy#lYNC$<QFim=V9Cc
zvWExi*6_@fk_?bRn|K&EPo5wo${hgGv5kjuJL8VY8-$!WckwW6W!%lk5IWgWPGho)
zus-KrhF$E8`xqHiCkIH2O};P0&n3jb#CU**@gU=&$=$*>919qa@Gu@_JU02f@CN>K
zj0}tlTnuj*FYqv4WV|%FPsD`x3L^uf4j1D!#vAO6*C(GB5o5l|cx&<t5mli(j0`M?
zn-6UVX}HJ3$jx|vvb?B*z(Ym`ro&*t$2^Qr7@tn|7Y&wv!}y$s@dYSDvgM@arI%!Y
zG`-?se9ib~@?KGOjyH_&K%DoJ--t?a7%_eXC96-9`NU+IRTz0E>xl(2ew*ANW}x(+
ziIJU&fssKZ8Iir*6LV98OA<>`d6<}(m?vKn(_&|0<zZrDcruw;JWz^>hlh!mA)k?f
zE5tt_-r3bJ#5IVWiJy@{X7U7a3HGqe)N*zv!O6YiGE7XulUIw&3Nr~X`f)MwF^Tao
zI5LSdGRSK9fRyrDYld+#E?|-b2}@0q(Boo~;bG8a(Boi|n`|K=ug0Xn!=Ml1Dlsy!
zI)lnQAqHl~140Zej0Zp()p(fHnKUNXO2}(3VAA1X(gnpXC_#f#qDLwy?Xo$<F@OOV
z10$0m50ep-@#NzY5uD~smh4OxpwttuBg@LeWW{7X*-KKN&6bDpAd}tXdPy%f2OcIz
zCa1~gC9Bxn7~Zinxli_&l4CqDIZsNG*N2D67hG%=q^4$1UM-c+7R(gN&J;3PL0X(S
zj46Dwm9#rsBoD(@rl`pd@^X_U^ff1+lUC!5Vc5ma6wAn<GdVz7XR@Y@bbT;W0uNIn
zQ#d07Uk2F40Y&)*sYNA~LJS;Ck&FynMXAM^RjKYpppuCVR4QnOaWXJ6rSUMxGbnH|
zlrv@UFl91SGcs_dr<OoG&BbttDVv8W2NWEj(g~8#84fY!@i66s1UZXgN+%zd$zZ8q
zWDuWRs3@+?#qfryiifG1@jW90dl{%c@K57nDhI`0Ia3`EQ$53r$(gd!jtdxj*&LD%
zKmwL=0aH5<QwOLN0Oerc#0pR$z`@kT$iSzYR-v1gpI4#_@`Du@Q#n%)4^uBw-{hmR
zS^^Uo8JG%6K!TG%f|Dozmo?&Dz~~{wz{xZX6c5uU+sOqmhcNO^o+xJ+uz=wiBZFXZ
zYDsB<TYg>%$Py2y{0a`H`HT!KA(?rV983!t8CZjJ6LWGnm=-fKu=%E@WR~V~FfC<d
zVD(8XN>AlrTF%J8;!z4>t(?40UV@E_@c;+Yn#mXCCD^z@%=MGs%S*8FfS8*m^D0QN
z@q(CJCo9NHc<?bEU}Rt^$;_){WMD1MO$4=-*mA*kFfy>_fGl8SV96*=PX#xs67$ki
zVGaew*ghTx4F)z2rUR2tD9n&$v;T7j1kQ3W9bsf(wB};4X7m6Xla!h>d4b|_#!Hhk
zlyul`fHKF;$+MIcmFKZJn1F+vfs4TtRI)NM-REIQWk};<{Ll1|hv^a1<H`4w0(t*4
zJq2lc2C9*xK`o`p0m>|FFL;<<GQFA{rEFBs$n=JXX%C|yC{MiOVVcW04aEAu!#EYf
z`ozOj24Q{SVd8?YzVR>xFa?6t{orAWV+v$*=!Ck3DVVW?&7o@on9Ic!%=Dj!nE{l_
zK;^7&W*#(6G6gd;@h~$pvoKChQc=}nW@BXF@J%eqNXgGG<zfnE=HOxGgjJ^@nI$=?
zAVF>(W}e9#Rm|9#g?N~SnVwC4r;@9=fLVfvSrSyUb7dC0WELkT<)o%?F)%Vq^Dum4
z_zq&p@-UodFq~Ya`kiAbvnmg>8pGwum1;{F^(V`#%WCQ|ICC-UF&ptP8#4wmG6<)q
zmbg}wq~;Z8=I6O(=9Hus6|*y&g6jHMO^M01>O#t(Mn*_#MTvr2W=?7`2eTz31FM!^
zNks`4vk9{`4}&AK%_Ir2$tTn$1?+ej_!$I1<~#5(J2E>>{-|!v;=;%vHhH0@SUo$l
z8>|_WnXeBrEhsfHCAEl)*_GJ?WR52zgP;be8I`CHRRAg_nVp%vL9#xK48jOmh*pq1
z10%B^591kzCtS?V%mF;ifebGg890hk6H|OL^HM>A!92_%42Hst46MmH`NgSR%wfzC
z?9Aby67Zm=tUM2MB!eL%13$Qp9bA%_oE=h>n4HSR91T(yGg(CQ6=T-q|C+LlIg@3z
z<aG0Sm<vD!Aag-}0Vu$Wco_dM{^eqbVJ_ieE(OI6Yie#mNhKFU45QlQ46P8JY91zM
zCKnFoT1Ezk$%fjhlizB|veh$suroJI7SNVuY?`d6?abIRxkx*nv2F4t?Rd!!9_CJv
zqc~Dhi&Jw_lS{Z5%$d7+n0qFB=>&03<YDq+xXjKxd2%AN#N@p??3`1Xr?WFpV`NYP
zw+Q5P`B{0GXE4v4{7uJ-XA<*lQ25PZWYE-@e8Es`vYf5}t7aGn^SsIFx_UB`m>2Lc
zF9an&P^-r|Kd&S;uLKm~9L$R+Z`2jxoy5$+#XO0584vSv<`t7K>1uNDGq2)dUd_B_
zGP9nY!aC*+?9A(7F$-?~`WJvYT8TM4%o~|EO-|G^6rIYvg@<`7^Grqt_Hf4_KTkh*
z4(9EXm+L7r?wovD?@+*g=7a3a2N;q2Q+}nnNvTCV%!fb)Ja<ZdX;MxqxKRqqXBk`!
z>C8uYn2&)ZL2Y24#LE2Ak_eFS2_EK?lke(Fu$|#yN@hx#{98YcF?e#6fxpld9;Vq$
z#*7S{If=PRDTykEhLhzDjV5Or8nNAFzR%8lZ}LJz73K%b4=0~6jAMJw{F0sd#bg~L
zb>>&huP28YJz#t``M-(r<Sb)Z{<ol*|G>j6$}Gmu&io!MZl@|OA;A1efEg_LjfYu@
zS(%@m`70xXuf}9Yef`PWCh{ylKo!mdVUZAP%`gGxUm#=t@-XW#>+-WR{}Eu;g@~~*
z@i6Ct#8?;+V(dK3<zO*3gcuJGa|LrHKRXLIBZHF0<TxF9EzK|i7CxvkLOjg<U@d}R
zEg*-ni1RS-VcyHn&LTGXzezy7B*eWevOLV^!NM{EERs;|N<7RLnJ@9PvnYbKgIvp^
z&cl2aY@`}OOoxa08dyvlA!f+Kd>t%ifDkj|VZH$tGlh%su~_pk-vkR<2{7wUcH|b<
z3KL+l<6>ZBapYmX#eAEeoy9?b`8Fd1k7r(9YLRnJVsUY5F*}PJs3}@tCdZ}Xlb@em
zTENcYu{qaFnUT?a^F;G^Osu60^BBq|w^$X{8!|957%?y~1TlcxdkhTXTH6^e%w!PK
z+RkugCIj~-hU-Fiw=vw`$iTqB%wW&Jz`)1A%)r1<#lXi<%OJ*3&)~qoz`(=6$iToL
z&XCNI!oa}L4pz%3#=ry`Nr0N)!NA18%D}*&wTZzp(u!rD9kcCn21&_!78xTS?QINC
zg<fuBcs+}Om3d7I6Qhjm!v8N=)_~0c*(nCr+QcBl(99sm(88d=(8Qp@&<?g6WDNs@
z7SwJb20n)43?~>E!LATtVE)g*%fQOcz{tSJ$j<PQfkB9gfeAEz0d-dWEe0kAP6h@B
zC#@|E?r?`0NP^uJX~nV6jGftxZ8?L8B!?)Qu^Fo<>rAjC*%(FHMA;Yqe+_l+MI`6S
zF|ac*Fmy8rGxRX1GxRd(F!V9#G4wE4Fmy9GFiZkFTLB!5PW4cC3p1!Pd}8>_z{sG^
zz|Qc6L4ko4>;oGH*8dEA2p_mHF#Kl_WZ-0HU}R_b3i6X1*k@lE7<iffGjO7)WMBeS
zd{CdJGBAU!6xWiG-p=p?O#arY2XX#sZD(Wz#V`{%h9RLnje(6}Is*^G3<e>FnG9kK
zvyhw(i)jW1aYhyfHc0F<vNEtSfI{~#!*__Cj4=$%;Gl?Ow%g6f7P*~~!-@qQn&z7r
zETsk5GDPdy5{$MnJhft#WRYau#>hF7K}eDnnie=%?3OcdLnL^@TR<T$z_#%J3E5c;
z+*;Dx8TpnoaDZqbkkeVfPPby<V_;yI%fQ4ikAa(E0fQjJLIy>KMGU44iy6!rmM~Z`
zEMstDSis=Ju!<poVKqZ27sDEc2!?eGu?!m~3)+ZzfIR_9%yD3kfxHvLD9QkeEpCQj
zMlnWl1{MZI1{FpLMo9)%20jKmhE@hP1~x`1Xf}YTlAfGzBUaA{4w?T98Vv0042+D7
zjO>hT><n)h85r3AGcX|uf&%bAgAh3KAj%jRSQwZ<qf5kuq$ryJTZRlqK-Lo%k}}&F
zWk4Y*vz<{MJtQ|XFfnXl;AYsyAjq(tL6KnxgDJyK26Kj83|0(#7@QckG59bXU<hD1
z$PmhKh#`XE2tzExF>pfhU|^ptX~Rb-K$VCJP$fp{1Sn`E4jQ1V7?>Hj7#J94Xl-E#
z*vY8O$S{wgkI@gp(_mz<VqMPQB+0syQHPP?0Hcu=izLf77e<pvE6#mp9L#3y%NgV(
zIYrs^%-BTPKq*-!VF3fDB#Ym22HqBSMp1TAj)ngpg7jN3GR*qFOLrTiwHb@<Hb#@l
z>2^l-kaT*IfrsG~10Ta_1`UQY3=Rxu8N3<JG59f@X9#3C!w}7Injw|p3PU!-RfZ;p
zYYe>%R~e==+ysYi5CaFu?a;!5fnf$b-OhlfTRw(PMmt7(24)5g24hACMtcSp1_uT~
zMn_O;t!Kz)&|!39P+(wTXky?73qs193<i$>3^ELC;PlGQXvDzIsLQ|r65@ghu`?Qh
z1VO3UnSnu^=|9Lsm?TWSJh+GgsWAc<y^PKb3?d+v%pjGVj0_A6OrTNA$%YP!ll|<a
zRqrscGTdblX1K#3!*Cz$M^K()V339TQI?T)vVemu3uq8?vY~_I<TDN&lP}myt3G02
zWq8aW%<zaohT$m=tt=3&ps`Rx2OHHF46F<<8H5>LFvu{x#-Rmjn<Aqi)HY?+cMPly
z?-_&{-Z989e8iy*Y!eeB^JHU3cVX9UjPA=B__ek$cuN}zGkR@fbf4VoC@J}cftBGa
zgD%5221|zT3^oiu89W%iFa$FEnY`c8vi>mxHv=0314H_52G7Xtj6PN@yBVw_g<fuF
z^tEE$#9%8Uz?LDKAjujm$+C^npJgw@q)28-*5I9t!AuO{k}SfEk=q#EC0TYe%!w3X
zn8(K_!Wg}sF?Jhc0>~Xu%`CxMGP2s+8B-)#Hh>}nTzsm5tHS#K44?=SVPs-ZU}Rx1
zVPs{nVPs<nU}R^AW#nK;VdMgP-45bLc>JU@9Ai)cm1GR*;4+a3<O7B_1~vv}22O@J
zhSLmZ7+4rY7=jry7&94I8JHNl7`h?3kzqLls2X8la28?A@~Yp>U>vEwoiWFXRgzVN
zF>4cJ?l#6^1hX8$tU@qrC0W(CF*ZoDBD|vn$|a0^3@nWN41A0N43dn33@VI54El`1
z3|5RH3=WK<V4r9)urM$%IKzB0xxks1v3YWxvsQeIpRT$HV{864#&!^+D_dQJu`7EU
zV~_48hOBLj6Li60%ox3$VZk=WiMqm!leRHV(M7lb+!A1vWZ+<wVi07MW{_u;VNhd~
zWiVlsW3XnFpUm!}SwEF=8Z;DsGq8diI<>nQCPZ#$obIE&iE+j@hUwZOjI*~f&fU$p
zAX1od(RRiqzPlNhMhY`7-_E$w4<fp1JL3{779A1BHQN~1NwVl{W8Aonah>)y#w~2%
z<e?KB$)Xz^$tuYLO(weA7`JNa?qb|o&%m&aagUDHF2?;J)?sag>x~$A7#J9p88{eK
z82A}g8N?XX859{c7<3pl87vsJ80;Cf89W$u8Il?G844Lq7^)fF!Qp8F@dY$IIT%VA
zk29QNU}R8ah+#azpvS<(pu-Tzc#`oH12cn#K7%XcX$Cz|eFy5PLV|)Zj)4^vc?=V^
zg&EIoV?6Jx!(t@NczGM+`N^@a;`LWqQv6$38AVxj_bvSYT8G(4nDO>D#=A2agmjo8
zJYmKM+ZZ1O>o6OE1hz3gV@cV@_;Ls1RWnu{W+NSDBdE|@E4JN?Mv;;%qO6i^+ZjJt
zv4g4rN%ozLpP3lKLG>XsIBS?O@G>wkdNXh^`Y;G-G5Rt{F#0jbG5Ry;F#0i=F$OU>
zF$OaPGKMjvGKMphGDb4AFh(&<V2qwD>n2|Rg;A1$k%5DulkqF#HwGpKA%=R!?~LCV
zm>DD(Dj9z;x-hUXNHa)-vkfalDuWK=PX;yyR)$gr8OC3Xk_>DNEeyQiLYy7kDwGAa
zYvsVDG&{o^cE;ae<jlyxAn=Ppk%0-+>4pR(Lni|>gA^!vD{60J{O8MTx12$66N9C!
zk&dj<HYS$IXWgVt;~7{P6BxJ{6B$Gq6Bra2lfkhF$rXywSY%*OWMXIHU|?imWsqUw
zWc)T+)?JeGHzO|t6KE`Gvc0=l{d6B_O4Z)P#J!DSx)vyH3ccLT#22}nNgz^~NoYHh
z$aW^t?MxC|nWQmfWszj%L0W~G6hVnyYYUUK)-EPxaPrjJ!X&S?i%A8>k!IP(qzV#b
z*;db_sw2Xrxs6F%M}$dl8{;}Ho$X8ph&%u?CpeNtCpeN7qyd@{kkY#y13v=;V;Tbo
zV>$yrV+Mm5V-|x6V>Uw&V-7<sV=hA$V>LrLV>?4VV+TV!V<$r&V;93z#%_jLjJ*uI
z82fa<!3L?e_CSM;gJBDk2{`e`GQ=~Pf)hUzc(SJ6LsrR5OIk*E7n2PG!!{;+P+DUG
zr!_7HCI$w^Neohqt0wRBFs^rIa)HKXHM9{g59&RMYJ<yjqisyCGZ|QAz#S(6m4*Lb
zGokgI7}qkeGOl9~VqDK4!nl?}mT?o3OXZ<1WnhqJ@?cP6U}Ru|rbH%iTH|1tT;RzS
zV#H(&b%Qgwk<Y-ut*y0-$rBt8=uY3pz{PkLYzL%w#tpZF8yp6V3{0R=n#t!p#kjo>
zF#h*pu?3~h$?rWy8J|sN^-_?$z`)ITk%5=-5`!}1Wd<$AD-1e}ml(_#uTQq~603)%
zL|z7MCO-xR1||k&22Lh_Mo9){u#+V~*+UlGzGi3q4{3k=W?<lBVqgM|Rzm#|#K6J;
z>dFdeZ(|D5($?9<6ak8dXmroqX5eRh2=)vlY6Tc3U-ptQk7EkNVo*HTpd_pYJz?Ny
zd^K6kTT?NaDFvdJ(U5@^RLC+kYi(gloyowfwS}Q%8&mq^0&jE8EJ<z&b`b{dY!QZ<
z{B2CRn;1+*IYFH!t^^|_3C4!W7ra%X-!e!szGF~ee9xf9_<_Nk@gsv9<0pnt#?K6S
zjPDsL7~e58F@6Jk1JZbGhQ~=WQvm~Lrka7FnW>P03mhoTOhpV_46F=N44F*Dll^^U
znM;^TC+GXfGnX+=n>^76l-XHqmorp?^674-@<^E-OqJW2YPK=eZf9KLw~4`&*=QTX
z-fc_`A`J8LEm<U3M3@@0E!lJ>SR`1sF*WOoFtvy<wQOT*(*@}kX6oF|R3pK*jj3Ch
zsec>O#BEHq+nA>4YU%D`nhH*0+S?en=<Z~i!Nd>_>TwHjvn~1G4lQmb8~RF^{$$`_
z{Kde__?tnQ@ehLu<6j0F#{Ud1ObiTuOpFX!OiT==OsotIjK3H<nb;X7FmW(UXX2b(
z=c~;<lR=MxnZbm?hiTU2ExyXkvzd%1-||%#aGlA(zlp(8#z=b`(;QG)Dd;C9#>C6O
z&cw&S!^F=Z%_P8}&cw%H#3VA=(NCOl=Hy5}rTV$B>YTBKffd~Qy#%YyL187#G!Im!
zL6{3bVFh7=s&y+C2zv>rGG~Rbmx0)9I>JmVwlPi7(b~nd3LG4|!c42d0kn&0Em%O3
zMVM*bHl``{k}O)gm^MJfScRE3ZeyAv$*Q%BX){EKO_*s5NQg~q7t=Pd5GZ6h&>IPn
zY?7?Ok?fLeuu>Az1knaHdl;r8m6<^dA`A>n;tU*25)8sjk_`27Oi~P5OwtTyOfn2k
zObQI1Oo|M_OsWh~Olk}%Oj-;%Oxg_PO!^G<Oa=^HOePGIm`oYwGFdVlVzOd5$z;uN
zfyoA(N<AQ92Ti3M45t`Qg3D21hW$+2!R4qN!xp9;;JDLbSi!Ut+=ei#XPCpZi$RZp
zmBEQ&0@H2=J<y;8XjTK7;lx0_6$S=|IxXp~OnbqDQLOvSSU~lnwj`^pk*^LUJ?`Jm
zR3qIk!gMejoF)%L(<I}R7G_3SQI>`OuWn+njkLnhTVEatNzBsi;HDxdLBljN9ffNK
z6*7>9g%+qA%H+Vn%H+r(!Q{lC%;dsg%H+gg!Q{x`$mGTl!sO0S!sNzK%j5|T7f7{S
z2MrenhB}58@Cb|qg92#e%Z`DGA%sDJ=@?@s1Ec^~V_^BuAPjCSfQv%VD405m2-9%}
z26YBbrV~sjCr1V;^ZS4;0=3^cnNBgCp4=Uz%pZUxc82Nf<h?=4^&xOEMy7L2=NXuo
zE--)wE*P0Eg2ogX`xrRDjkr_LevGfyZiezm9TBF>B1~7eGhN@xP@)4$S4_8b!0l+J
z+u(L|f(|H^G2PYL&UDXDYYRjCZpQzSn;0y2Fg@7L^kf^;^KdNzp{-1N>$SADFzwyW
z^jd2>(_1SRt?f+jtys0TGkvsT)7sAT*@|6f8>2rYWrGqkr2Wel9LXlh4ocdvmavw#
z?slfHVDh`R2-DAPOuw~7nEq^I`Uk3COSUmHY6~;7ZewQG-p0%YiZ@6l9mP;D#=yW7
z$-u!B#URBL&7jB>!=TR;%V5S7&tT1zz!1Qc#1O`m%n-+v!jQt0%8<pB#!$eN&QQjb
z$uNg0n_&@C4#NtjJcjj5`3&2b3K;e=6*3%UDq=XvR16MRNHKj19?_>j6G-4@<RNBW
zhBFLI^$gYw{R~YE%?!*8DGX`Md<>@;SQxSx62Q%ER)zwGC}w_!Qw(ejWeg$URtP%-
zC$j+4Ge}lo09ELqjyS8<4rW1w$H1)*rZNT=rgE@5AcMQC%p#267#IYYK*RbF1Hu?~
zL%VGbT3Z;xW-%CQZDEL*#h`^f&bBZ~Z(|mp$-oV2hcSa%ZPGH^nWeP0Gs}Q1X8|{T
z<QUi|>x4?y+cQ7{0g~Ds;DO-4EXOPluAv;56&NMK9XAK2Vn#^@R`?Jc0|Q8vBD68U
z%)n?Wzyz9afVi3=p8+xw&8wxojag+YLlkWE6Otdn<J<L&1`HgGh73H6M&K}jID;4N
z3|?k+W_eI6je(b0gIN>oAYNuIW=#ebBxitBX)`bhFfr>e>q2a2jAh^e_nWhJGwVfe
zXEyNF*~V<Ro7p5%nAwbFFT<NiW?^QF;QH;%R*=e0M{5hS?KWn6zunBvk-M2)BXzek
zyKiUqvSL}zz^Nt4x}Diql4TpSf20-b@&BJd%%J5A0w7aEmospH=%|fghek5QFo!WP
zFhnw>Fh@hj@*$lXGX@Sua|Sg=3kH2gO9lr<8wTfkMq36?MjM6@Mtg=xMhAviMn{Ge
zMkj_;MrVdhMptl{#DE72vfyEo#T?5V2Tq@X%<;?#3``9A3|h>I%t;K)3=RyE%*o6t
z3@i-J3~Y>`?hq?OAOi=K70bZFoXVWWz{HTsz`~r)oWbA#DY}e7qu<WpqKln5lbu<Q
zojIGG*_oZ;4Fkh3kem<$6KEuyIg^2rojJ^%ojICCfC)4^G`TihzCP~&<9~2*0ZNeD
zm_RMf?aYN*TNo0zF&Bddk+(3(gA?KwhWKsFWh@IIX%pO|VBX3Q0ZNvTL;)TcVa#J-
zWh`J2XDnn;Wh`dUXDnebXDnlIVk~FyVytBFXRHE;3#7>#z>qvyI)bwv5+<N25f%m}
zb0GmH&^#3+EilYsU;?KcQ;3s5&h^#OfjBW9?nG&*6G4uK<Q{pD3lWZk3^LR(a5L62
z2r$+&NHI1rC^0rM=rA@j#G5d-f?Wk^yPCpd%M==0+zguF)-)u*xfz)LFetGz{{O`w
zD8K}oK7%-waTNm#IJ&=SZD9yH#^4Xi<3Zb*t0pr=8VlBJW3F2cZo38vGdFHyuAA%@
z=_1h#9{Umj^-&-Lq(;Kbt)Kz0MUi@p?UOG?iq&@^JmJP5$iTojnSq^g3WFfyR0bQy
zX$)?R(-}M&XEFpc&SB_coXaqqaUR1w#sv)P85c9`V_d>;m~kn?O~z#m_ZXKlykK0x
z@Re~T*sqY>`VH>aZ_KgGy$mc2f(%Z~ec+DuO$Jtm;|!D2qEze6!Sg2{85sBkm_QSP
z5DzolhW4}~wYD=)n8jeG#j=$lY&Y|y$W6>swlmN2)e&Z%yN!9ijxh70ZOlt_wlOc&
z+Qqz*fngi-S}o?S3}MR|6d|fNLsf5ssNMlp4I5ghXJBA}WW((Y?2J1Yco=swh%@eD
zkYn7<pvt(1!HDq)gE`|-1}nzn46ckP7<?E{G6XZ8Vu)Y_jTkd9K>QjB_iH3HUd0&{
zn0GPnW?*7)We|q4psCPGR)7gK%?b8tJp;oe26k|fq%6t0jd`E;Hs-@K<}gTTF>hr`
z)zaC<d_-p(^KqSR%%`?7p9aMjq@Wf86}^mi7<d`)G6*r=V^CszfE4!1aQ7&KOG;2b
zOPN`N`7B5mgEF%g^I2$tT@R^VK+4V`N^B(oCg$_Zd%-Tm;=l`F2eJ_1z^4qnjL#T^
z7@spJF}}p+z;p(X)sQL$y9;qT@FMdir~^TbE|3@5w6wP~Uj_vdq>TWnN|_m0nOG*j
zixCGG2B7NTDy%wSu!nZ0*|h|?wllp(*Q&(8#-t2(Hl$QxhleXWB%TGBK(otGXCN8I
zgT*lQdImNo4FaZJ$L2I4ET-u&urcWpFzg1ZVW70mt|cIb#WX_(HYP|_i`%0&QB7lD
zU|`o0kiue^83P-WITok!GcX{6?H2Rx$&T^D^>>yrSfO+S1R>o3p_kj3SYYk-_n;aC
zqZtZ{ElB+!1<F8-dl}dn_c2H@?q^V7+{d8Fc#y%4@i5pOkkZ#49((r8kC-1aFfvFn
zOuig1S$`K+2J!x9kb+iecR{n?%#T51^UP0}pE58oEMgE~e#5}b{Eqn}^Jg&Y3-fp8
zpJ3K+=6}rpK`a&q7G@R}FpHIigM|~!;$q=t;Rmw>ScF+bz${S~2^J|ZOFD~1jzu2K
zRA5nNQ3115Su|KQ!7MEnT^2nsOP|Gv#Td*oVKHa10JAJvY*=i;EPECw7H1Y01_lNx
e24)sl7Izj;21(|r%#&EW93+`dnDtn^86*KU(;=Gx

delta 12146
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
LJhLQ=D}y8e*hM9{

diff --git a/bin/coursework/Square.class b/bin/coursework/Square.class
index d244d5b2579894b681036730669ad911a3c75bf4..ef7b1b6f1ab6cf0ef440306e32c5b7b42af133f4 100644
GIT binary patch
literal 2338
zcmX^0Z`VEs1_l#`Jaz^qMh3y;{L-T0)bjkIZ2jQE(!`=vb_Nzk27#=^vPAuy#JqHU
z|D>$c<Pt^(mg3B+R7M6y7e)roqSWM)#Ju#JR7M6lACS_t3jN~b)Vx&v;*7+CRQ({B
zyfq^Ob4h*yBZDM1Wj>jCsn(1PtVNmW86}JiY)SbgCHc9G3@kaRX(fydtm#Ghr3H)(
zBB*-ZL88`-3~V-;d6^}4j0`LqE}CJC3@pz1DXClx%nTwt3<3<Ij10^gnqlk=;*1PJ
zC{6_H=VB0J5aDECWRT)v;A7wiv1E7{SQ*&37#JDkco^hC2C$?QC6+TX@PpjxSDKrY
zS`?C)1oE_yPkwS@PFP}5CWsFeWGTtWEM{a7_Q42JYjy@zMg|!aSD*zH7lR6eI>_A`
zj124=E-o%EnqeSEY4I?yGjMP+=rHK9Gw3ohNT3)}keHcQqVJralV8NcpwD2y$iN!z
z;Tht}$RLFpW=IOHK~@>@Fc>qKFfy<gr<S;7=HxIk$ZBBI5dgBlS~Co!$Bc);oI#M0
zfv-5VB)Fs~KRY!%Go>VhoxzfkK^(<d5Wj&!jf=s8K^^1|8y*Hu1}+fGj)#F8!gAnY
z;DNB5co=vYxIl5@!o%Ro;Ks<not|3aoROK6Qk0s<$e^mB33FX?eojtma!F=>Ua`J^
zQgLcg87K;TGK)*B*%>?-83a*W;+LP2%FW=#;KR<~&B&k#mBVcY4}&j*A0q=>VoHi5
zC{)BWqQMp;X9a7`C`Ja3^wbh?LSkePLpTnS2f*Uij0`;KsU`57z{sG0t_~7Ra23{!
z4BSPjpj-wDxnfYzh4L_jfr1<qO|E$<5g@S$9)?Je7$-Oy5{pW}qR~7IF(6T>%1DsP
zI39+0kQiKLBqIZRUTS$TI3x2Er<R1|7eHc?kwH$w1?*FJPDV~LpafvSU<NWYm4_h>
zlyV@3f>Hq^18X@bAuuwqCWBHUB!vWl@-)nF{^HaUCvfJ5iSQPumiVNmK@$=q16Oc<
zX;E^jTP7%baYITXJy3KpC^9fIFf%YPurn}$@+SiW0~07qfN4$!E-=jvrFoz<FO=qE
z;Adc90Hrzs20;c!1|bFphFAt>uz8YN+Zlwlb~A`YZfB6#${?wwzLh~*Ya4^?MzE0z
z3=9ln46F<c3_=Vn3<3=N48jZ|3?d8?45AE*U^ylR1_nt6B?e^%5Re2rj*)>8RCGYC
z`o+M_z{tSBut94#gGwYHpVk%zX%ODdpthAkQ)>%@<|YR1Z48DW7T-1oQ?1<$7Eon;
z+Zn93GFXE}Kw6OWT5V;pg^R=G!0PS6;$XFW5EC4=wlGL;V{qo!%itc#46-OVl0|C^
zgLQButJW3<+u%qxtt|}p!IA7*TNoUJcQSY~F@z&RK#hTufdTAiNd|caDF$^0X$DIM
z8HPXxS%ypoIfiNmd4}~23g8gof%p{~B8&|F3<1z^&}RUJ3j+hlM#&BE;AI1AP)5?s
z3fCOS5QIguCc0*IteS)2kv$a}*`Q#sR^P@D0`jx^HimF04dX|F0s$&+ufB~T7Rm>S
zJA(M=L88sT!Jx|^z@Wz<!JyBez+lLr!C=H-z+lW^!C=bZz+eV;m>2^nkvKwq#lYam
zkiY=)H6ueJLlV?~;S9_SEDQ_`f}mJY-^P#(qII`1q#&&111DHZ1`Y-*1_1_Zu+a)&
zF+sS|f(+?kqZt?k88R3Q7?>Ft88We2Vhgpz7Mmq@3>*yh3<3-eL|c-D)e=x3f_!3+
t%@St@4h9zn0R~s1Ey>1e2`FYjmN;Uw#Djr@!IMFN!HZ~1a=<Aw7XWXF#<Bna

literal 2594
zcmX^0Z`VEs1_l#`GIj<gMh3y;{L-T0)bjkIZ2jQE(!`=vb_Nzk27#=^vPAuy#JqHU
z|D>$c<Pt^(mg3B+R7M6y7e)roqSWM)#Ju#JR7M6lACS_t3jN~b)Vx&v;*7+CRQ({B
zyfq^Ob4h*yBZDM1Wj>jCsn(1PtVNmW86}JiY)SbgCHc9G3@kaRX(fydtm#Ghr3H)(
zBB*-ZL88`-3@pis>8Xqif<8!Ia867InaF07nU`5&$H>5<;i4JF$iU*9pOVVOz|0`V
z!yv>U&d9*5p&7=`Aj!xegyMRz(Oe7?3}T!Nj0`e7415gyAeI~tg8+jdh^4^8z{<eJ
z#lXm*#KWKrGKwXoD6yQ8fgj`<ztY^K)S{5YBv8l*`Q#@j=7c2{WrFxnL6(w?%wk3c
zVPr=`!rhvYfxS4j1mpuo1`!Qp1t2kNkU!YdVG4vbG%-}LGw3oh$e?%#EjqXubQttO
zL14hhz^>uq;^Lwi2J)2=4+A>`2PcCGgBd%6DI<dfiXjDwnRzAp&iOg{MLZ1V3>J(G
ztl=J>A+C%JQm8S5q|h2<l@$+zHG>VrUv8N>IgAXl8rXCMfGn`q3<K%0<6*F85N2fH
zD^4v5E-A{-P7TjYDal}GaAaf<M{yR!Z=hi3VsK#42l>N=hk=uU3&e8cVc>?aJa`y*
zAS^E)23`g(Q1trnF!(a~F*0z2!ZRZ?C#5JgkC8!DLlfq@<oukR)Z~)P{Jdg)|D@v7
zqB2k%`eYWDShF((Ffs_DxWq3%C6${Yh#`cXA()Xt5h{n<3?7D1hA>73w#1YaM^LDU
zX+(o9M$T~7no*1l9O<bg;55m|Ack-pB&UJJtr;13(o;*|`Hhi50bLy=nBXd`85y{X
zQbBnc6mrF&po`^Uhyw*VDEYbOr9^<l5_lLAL1LWXXh<w70gEQ{Fr<J)p(-OmD${rv
z(m`Tym641L?0Ko>!QkS8r#Q7FB)<R>lZ*^<8ZKa;!pjTfBm+tS4h(i6Lvwi;@<1sE
zVkjsTFfy=~gAxKG18XuUB|=h25UAvU8O~pvTH*vQLSQ1i#i=DescF!J#K^!EoL^d$
zoa&Yd%Aeeje5VJBE(S#gMh0dE1_llWCQt@vU|?VZWeG6N$-o7sxuG-<l;(xfd<^_x
zc>xAN1_lOh21W)U24Mz91`!4ZhBO9du(@(t+ZjZ)b~8vsZfB6%${?-9xRpUxOMNSY
zyw)}b#f@P7Dhvz^QVeVi3=F~yEDQn+{0xE&A`Bu7k_@5@vJ7GjstgPaVhl_S3=DD%
zY7FWOARq^JEh7UXg9d{p)J{7FCa@|tE$yugvIw)ez@m~2tPD~}X0gG|VgnU&3?Q?#
z7_^~g>4W(U46IsP7-ToVoyo?)$iToL3pR!a%w~le!w4!Bp_+ez1A~EKgVt^aok%`D
ztt|}lAiSMHZ!3eL))ofCO$^4{7%V|7zHJP)TDut>pvw5RGdOK!a0ZKjv>@qq+RESx
z7l+G%)w_em!D{&+CU|OXVUXU&;LWj@!9S82WKnP=i`Etf=io??mt2D**|fGWxCckF
zYi(ih4Bp8Q$ixti2r@MWP6h@BMFvp@B?fs0Wd?Ny6$VQNRfa$YHHJ(Eb%tsN4Tkj$
znn>ZW0Ui$F3=z<9Kn_G{^gz@>(u@eiNQNjZnhnu48(`HO4Nrbkp~=q?<Yo133^7_;
z7+lr2F~mb@7(WRV2vBi%^=%BPP(Dc96U0Xk5)%dv1~Uc$26F}p1`7rS1}g>)25SZb
z1{($o20I1^279o>AgR?68YB!1jtm(Lprpgdkjan*^<OvxGXo0)1A`#ciP<1pcN;?v
z!b(1H7II?XU~py-U~mB&tpFAigc~i$kPkMRfkBX=fWd-+nSqg^5UV91|AQ=X#b${+
z0|$c#g8+jk(UufpwFDH1AWPh_S>nUM!Qjgvz~D!;CB;}R0mTf+5>ITF1Tt_i1ThFO
N1QTsZ2{?O~0sspa@rwWe

diff --git a/src/coursework/Cage.java b/src/coursework/Cage.java
index ac9a83f..b2d1783 100644
--- a/src/coursework/Cage.java
+++ b/src/coursework/Cage.java
@@ -27,7 +27,6 @@ public class Cage {
 		this.cageLabels = Main.getCageLabels();
 		buildCage();
 		setCageInfo();
-		setSquareCages();
 	}
 	
 	private boolean plusOperator() {
@@ -71,21 +70,25 @@ public class Cage {
 		List<Integer> sortedCageValues = new ArrayList<Integer>();
 		for (int id : squareIds) {
 			gridValue = gridNumbers[id].getText();
-			if (gridValue.equals("")) {
-				return true;
+			if (!gridValue.equals("")) {
+				sortedCageValues.add(Integer.parseInt(gridValue));
 			}
 			else {
-				sortedCageValues.add(Integer.parseInt(gridValue));
+				return false;
 			}
 		}
-		Collections.sort(sortedCageValues);
+		Collections.sort(sortedCageValues, Collections.reverseOrder());
 		int cageVal = sortedCageValues.get(0);
-		for (int i = 1; i < sortedCageValues.size() - 1; i++) {
-			cageVal -= sortedCageValues.get(i);
+		
+		for (int value : sortedCageValues) {
+			if (value != cageVal) {
+				cageVal -= value;
+			}
 		}
 		if (cageVal == value) {
 			return false;
 		}
+		
 		return true;
 	}
 	
@@ -94,18 +97,22 @@ public class Cage {
 		List<Integer> sortedCageValues = new ArrayList<Integer>();
 		for (int id : squareIds) {
 			gridValue = gridNumbers[id].getText();
-			if (gridValue.equals("")) {
-				return true;
+			if (!gridValue.equals("")) {
+				sortedCageValues.add(Integer.parseInt(gridValue));
 			}
 			else {
-				sortedCageValues.add(Integer.parseInt(gridValue));
+				return false;
 			}
 		}
-		Collections.sort(sortedCageValues);
+		Collections.sort(sortedCageValues, Collections.reverseOrder());
 		int cageVal = sortedCageValues.get(0);
-		for (int i = 1; i < sortedCageValues.size() - 1; i++) {
-			cageVal /= sortedCageValues.get(i);
+		
+		for (int value : sortedCageValues) {
+			if (value != cageVal) {
+				cageVal /= value;
+			}
 		}
+		
 		if (cageVal == value) {
 			return false;
 		}
@@ -172,12 +179,6 @@ public class Cage {
 		return new int[] {row, col};
 	}
 	
-	public void setSquareCages() {
-		for (Square square : gridSquares) {
-			square.setCage(this);
-		}
-	}
-	
 	public int[] getCageIds() {
 		return squareIds;
 	}
diff --git a/src/coursework/Main.java b/src/coursework/Main.java
index e068d7c..35d0332 100644
--- a/src/coursework/Main.java
+++ b/src/coursework/Main.java
@@ -111,15 +111,45 @@ public class Main extends Application {
 				}
 			}
 			checkConstraints(j, i);
+			checkWinCondition();
 		});
 		
 		square.getRectangle().toFront();
 		return gridPane;
 	}
 	
+	private void checkWinCondition() {
+		if (checkCellsFull() && checkConstraintErrors()) {
+			// win condition fulfilled
+			// animation and pop up
+			System.out.println("You won");
+		}
+	}
+	
+	private boolean checkCellsFull() {
+		for (TextField textField : gridNumbers) {
+			if (!textField.getText().equals("")) {
+				return false;
+			}
+		}
+		return true;
+	}
+	
+	private boolean checkConstraintErrors() {
+		for (boolean[] cellErrors : highlightedError) {
+			for (boolean errorVal : cellErrors) {
+				if (errorVal) {
+					return false;
+				}
+			}
+		}
+		return true;
+	}
+	
 	private void checkConstraints(int col, int row) {
 		columnConstraint(row, col);
 		rowConstraint(row, col);
+		cageConstraint(row, col);
 		highlightCells();
 	}
 
@@ -169,10 +199,19 @@ public class Main extends Application {
 		
 	private void cageConstraint(int row, int col) {
 		if (gridCages.size() > 0) {
-			Cage cage = gridSquares[row*N + col].getCage();
-			boolean cageConstraintsValue = cage.checkCageValues();
-			for (int id : cage.getCageIds()) {
-				highlightedError[id][2] = cageConstraintsValue;
+			Cage searchCage = null;
+			for (Cage cage : gridCages) {
+				for (int id : cage.getCageIds()) {
+					if (id == (row*N + col)) {
+						searchCage = cage;
+						break;
+					}
+				}
+			}
+			
+			boolean validCageValues = searchCage.checkCageValues();
+			for (int id : searchCage.getCageIds()) {
+				highlightedError[id][2] = validCageValues;
 			}
 		}
 	}
@@ -220,7 +259,7 @@ public class Main extends Application {
 		
 		vbox.getChildren().addAll(cageInfoLabel);
 		vbox.setStyle("-fx-border-width: 0px;");
-		vbox.setPadding(new Insets(5));
+		vbox.setPadding(new Insets(2,0,0,5));
 		gridBoxes[i*N + j] = vbox;
 		paneClickSquareEvent(i, j, square);
 
@@ -494,75 +533,54 @@ public class Main extends Application {
 	
 	private HBox setupFontSizeHBox() {
 		HBox hbox = new HBox();
-		Button minus = new Button("-");
-		Button font12 = new Button("Tiny");
-		Button font16 = new Button("Small");
-		Button font20 = new Button("Medium");
-		Button font24 = new Button("Large");
-		Button font28 = new Button("Huge");
-		Button plus = new Button("+");
-		
-		plus.setStyle("-fx-font-size:28px;");
-		plus.setOnAction(e -> {
-			changeFontSize(fontSize + 1, minus, plus);
-		});
-		minus.setStyle("-fx-font-size:12px;");
-		minus.setOnAction(e -> {
-			changeFontSize(fontSize - 1, minus, plus);
-		});
+		Button tiny = new Button("Tiny");
+		Button small = new Button("Small");
+		Button medium = new Button("Medium");
+		Button large = new Button("Large");
+		Button huge = new Button("Huge");
 		
-		font12.setStyle("-fx-font-size:12px;");
-		font12.setOnAction(e -> {
-			changeFontSize(12, minus, plus);
+
+		
+		tiny.setStyle("-fx-font-size:12px;");
+		tiny.setOnAction(e -> {
+			changeFontSize(10);
 		});
 		
-		font16.setStyle("-fx-font-size:16px;");
-		font16.setOnAction(e -> {
-			changeFontSize(16, minus, plus);
+		small.setStyle("-fx-font-size:16px;");
+		small.setOnAction(e -> {
+			changeFontSize(12);
 		});
 		
-		font20.setStyle("-fx-font-size:20px;");
-		font20.setOnAction(e -> {
-			changeFontSize(20, minus, plus);
+		medium.setStyle("-fx-font-size:20px;");
+		medium.setOnAction(e -> {
+			changeFontSize(18);
 		});
 		
-		font24.setStyle("-fx-font-size:24px;");
-		font24.setOnAction(e -> {
-			changeFontSize(24, minus, plus);
+		large.setStyle("-fx-font-size:24px;");
+		large.setOnAction(e -> {
+			changeFontSize(22);
 		});
 		
-		font28.setStyle("-fx-font-size:28px;");
-		font28.setOnAction(e -> {
-			changeFontSize(28, minus, plus);
+		huge.setStyle("-fx-font-size:28px;");
+		huge.setOnAction(e -> {
+			changeFontSize(26);
 		});
 		
-		hbox.getChildren().addAll(minus, font12, font16, font20, font24, font28, plus);
+		hbox.getChildren().addAll(tiny, small, medium, large, huge);
 		hbox.setSpacing(10);
 		hbox.setAlignment(Pos.CENTER);
 		return hbox;
 	}
 	
-	private void changeFontSize(int size, Button minus, Button plus) {
+	private void changeFontSize(int size) {
 		fontSize = size;
 		for (TextField textField : gridNumbers) {
 			textField.setStyle("-fx-focus-color: transparent; -fx-text-box-border: transparent;"
 					+ "-fx-background-color: -fx-text-box-border, -fx-control-inner-background;"
-					+ "-fx-font-size:" + size + ";");
+					+ "-fx-font-size:" + size*1.8 + ";");
 		}
 		for (Label label : cageLabels) {
-			label.setStyle("-fx-font-size:" + size + ";");
-		}
-		if (fontSize == 10) {
-			minus.setDisable(true);
-		}
-		else if (fontSize > 10) {
-			minus.setDisable(false);
-		}
-		if (fontSize == 30) {
-			plus.setDisable(true);
-		}
-		else if (fontSize < 30) {
-			plus.setDisable(false);
+			label.setStyle("-fx-font-size:" + size*0.9 + ";");
 		}
 	}
 	
@@ -589,7 +607,8 @@ public class Main extends Application {
 		GridPane gridPane = setupGrid();
 		undoStack.push(new GameState(GameState.getCurrentGameState(gridNumbers)));
 		
-		fontSize = (int) gridNumbers[0].getFont().getSize();
+		fontSize = 18;
+		changeFontSize(fontSize);
 		HBox fontSizeHBox = setupFontSizeHBox();
 		HBox topHBox = setupTopHBox();
 		HBox centerHBox = setupCenterHBox();
diff --git a/src/coursework/Square.java b/src/coursework/Square.java
index 8aa589a..c441424 100644
--- a/src/coursework/Square.java
+++ b/src/coursework/Square.java
@@ -14,21 +14,12 @@ public class Square {
 	private Line bottom;
 	private Line left;
 	private Group group = new Group();
-	private Cage cage = null;
 	
 	public Square(double size) {
 		this.size = size;
 		draw();
 	}
 	
-	public void setCage(Cage cage) {
-		this.cage = cage;
-	}
-	
-	public Cage getCage() {
-		return cage;
-	}
-	
 	public void draw() {
 		rectangle = new Rectangle(0, 0, size, size);
 		rectangle.setFill(Color.WHITE);
-- 
GitLab