From aecb28232e02c7d7334ec51d48258f0436fefcd2 Mon Sep 17 00:00:00 2001 From: Vince <vi.teissier@gmail.com> Date: Sun, 5 May 2024 00:33:57 +0200 Subject: [PATCH] =?UTF-8?q?Case=20gris=C3=A9e=20quand=20grille=20import?= =?UTF-8?q?=C3=A9=20dans=20SudokuGame=20+=20sa=20Javadoc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- SudokuGame.java | 29 ++++++++++++++++++++++++++++- build/Cell.class | Bin 407 -> 407 bytes build/GenerateGrid.class | Bin 2803 -> 2736 bytes build/Grid.class | Bin 3519 -> 3201 bytes build/SudokuCreator$1.class | Bin 1226 -> 1226 bytes build/SudokuCreator$2.class | Bin 753 -> 753 bytes build/SudokuCreator$3.class | Bin 1234 -> 1234 bytes build/SudokuCreator.class | Bin 1956 -> 1981 bytes build/SudokuGame$1.class | Bin 0 -> 968 bytes build/SudokuGame$2.class | Bin 0 -> 1211 bytes build/SudokuGame.class | Bin 0 -> 1806 bytes build/SudokuUI$1.class | Bin 958 -> 0 bytes build/SudokuUI$2.class | Bin 1201 -> 0 bytes build/SudokuUI$3.class | Bin 728 -> 0 bytes build/SudokuUI.class | Bin 2353 -> 2557 bytes 16 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 build/SudokuGame$1.class create mode 100644 build/SudokuGame$2.class create mode 100644 build/SudokuGame.class delete mode 100644 build/SudokuUI$1.class delete mode 100644 build/SudokuUI$2.class delete mode 100644 build/SudokuUI$3.class diff --git a/Makefile b/Makefile index 8712f53..441d46b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # List of Java source files -SRCS := Cell.java GenerateGrid.java Grid.java Sudoku.java SudokuButtonListener.java SudokuSolver.java SudokuUI.java SudokuCreator.java +SRCS := Cell.java GenerateGrid.java Grid.java Sudoku.java SudokuButtonListener.java SudokuSolver.java SudokuUI.java SudokuCreator.java SudokuGame.java # Directory to store compiled class files BUILD_DIR := build diff --git a/SudokuGame.java b/SudokuGame.java index c4b65f4..09b8858 100644 --- a/SudokuGame.java +++ b/SudokuGame.java @@ -6,25 +6,41 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; +/** + * La classe SudokuGame étend la classe SudokuUI et représente une application de jeu de Sudoku avec des fonctionnalités supplémentaires telles que le chargement de grilles et la résolution automatique. + */ public class SudokuGame extends SudokuUI { + /** + * Constructeur de la classe SudokuGame. + * @param sudoku La grille de Sudoku à utiliser pour le jeu. + */ public SudokuGame(Sudoku sudoku) { super(sudoku); createAdditionalButtons(); } + /** + * Méthode pour obtenir le texte du titre de l'interface utilisateur. + * @return Le texte du titre. + */ @Override protected String getTitleText() { return "Sudoku Game"; } + /** + * Méthode pour créer les boutons de chargement et de résolution et redimensionner la fenêtre. + */ protected void createAdditionalButtons() { createLoadButton(); createSolveButton(); pack(); // Redimensionner la fenêtre pour s'adapter aux nouveaux boutons } - + /** + * Méthode pour créer le bouton de résolution. + */ private void createSolveButton() { JButton solveButton = new JButton("Résoudre"); solveButton.addActionListener(new ActionListener() { @@ -51,6 +67,9 @@ public class SudokuGame extends SudokuUI { add(buttonPanel, BorderLayout.SOUTH); } + /** + * Méthode pour créer le bouton de chargement. + */ private void createLoadButton() { JButton loadButton = new JButton("Charger"); loadButton.addActionListener(new ActionListener() { @@ -73,16 +92,24 @@ public class SudokuGame extends SudokuUI { add(buttonPanel, BorderLayout.NORTH); } + /** + * Méthode pour mettre à jour les valeurs des boutons de la grille après un chargement ou une résolution. + */ private void updateGrid() { Grid grid = sudoku.getGrid(); for (int row = 0; row < 9; row++) { for (int col = 0; col < 9; col++) { int value = grid.getCell(row, col).getValue(); buttons[row][col].setText(value == 0 ? "" : String.valueOf(value)); + buttons[row][col].setEnabled(value == 0); // Désactive les boutons pour les cellules déjà remplies } } } + /** + * Méthode principale pour démarrer le jeu de Sudoku. + * @param args Les arguments de la ligne de commande (non utilisés). + */ public static void main(String[] args) { Sudoku sudoku = new Sudoku(); new SudokuGame(sudoku); diff --git a/build/Cell.class b/build/Cell.class index c8b3b8cc3d755aceacc0d0a8c098afaa3595d0a7..9ce07ebfa8e5755da124af166916892fcdf983ae 100644 GIT binary patch delta 55 zcmbQvJe_&MM@}vV76xtxP6nQdzw|kUfE-~UM`W@QqZXs|<XA>+eq{z$1{DTI27U$x I1||jp02a^(n*aa+ delta 55 zcmbQvJe_&MM@|+776w)ZP6oD#zw|jdfgCO%hkLRSqZT9I<XA>+ej%W=Fask4KLY~; H6N3N%4X6h{ diff --git a/build/GenerateGrid.class b/build/GenerateGrid.class index a954a37e9644882151ce134dd31ac357d0d79957..877a443e49e396280334dc89e74b6870c14c528b 100644 GIT binary patch delta 1546 zcmYjRTTEP46kTWTYv%S8VPL4p3`k)VE-kdsLR%iCPozaqD8;r~808_QWy;G$V;pNn zqe*|-+or+92lyZ{XsXdEp-B_{^vC#V{n7a2zdwrTxX!&}Xfkv5Is5E$_Bwm5egBBu zj-<Z-ckLd4X3W~yhW$1|IG~0W3#~SE-_xc%?P@q^p+mV3**J_N7LMAGe#|koeO$Ra zmG23)><ZxoPKJ4ZuZ^ehv>N&>^b3SK`?`(}^><xM-;DInk0dAOJ7*?F1cKEy-D=k2 zwuv5b%DpN+OFfDTiO2A`L=zeXbhR&0jT(stG)g$A6_A~yQ=>D9xlw<20H-YsN<4!z z0{IsbFD2^d=O!-J_a&xAl9wcQVYfsb>Lt$NoW!$uPGS%CS~xE;gkhdJoJ`Km&dnq) zyK4cvI1$A25-(uH!l=X;#wA`vg?m5no;HCC?kn2M=A_zBx_@akV%n|LztLv|;%<i? zcZE@v3bDF?hDY!)N+4)~07_}253FNcmp!m9hs{_Pfa7+ah|vmK!?^?TB_{%v98J$@ zvf@>UbFM;bXalsNRRp?gQ>)N6<MRjv$S02l2qMgLEN|{yGf$}$g?FK!xdY>*vkG&N zgXP?&+fNwgQ4nX4c(?Ku1$>3AD9K$?&IIZb%h9w|1XmcEJLyA>Gn%xiXm`x4+Gc04 zWdYJD)rX@h{w^eQZ*>>VW|8OqWLBgeT0q<>jb>m+f*IuhAGrWSU-A7K-DyiKXTQ@{ zm^$E9<~X5&Y@66kunk-_qL6AY$3DVs;Z7?OXu~)T;tD!&6^C$(8eYN?e2ioGg8r}3 zg*`iXO&n%nQI?VpTF`~CAT8|VPw=T5*d^8x`V$79MqznR``n6#)ze}hpumaf3O!fu z&({94p8G=>+KPwym$XUbKkA#vn^;(2fVZ6{JA*_!z<bYOFU8u5^TalU9t=}+35;?+ zN#8V;xx<|bR;H+Lg@8AVlPZI@+PSBXv_;=XMQv0c&Y+;(iPbgfPRxnc^*Ygr-kT0& zm$SbrmH4$QgT;B0>bT6hO`{kyq<NNNOj0fLP$dZ=umOWFui%v3m`j@almalhe=5gh zHw6^VFJVb*^FvJD=9_jW8uN=nB;Hi9m{Z;Xqr{;0-bJ3j716o3oL${SScfgl@hX{p zjR;e0t=Gxy6*vuegYBFqv2U_aZ}GG9Hu~|72U$YfPz=hy(HUTQ+4de;--as3d>xu; zA<`Q8_&puqc)xU$mF>(0Tw{f<^Qg<-xxt3L$>+PQ$#v|+f|n!=;~%Aw4OpUR9R`0a z5WinusuOlus?b+0^{|E_AcKgP?6<E_m_acSEN6e%e5udHBC{{CZ$Dz6FR_6>p?(*6 s>#~=V{k(yImvSBD>#U7Nr7Je~VTx9LN-mPiOYFvONk@>5C;9LB4~(Mw{Qv*} delta 1565 zcmZ8hT})eL7=FH<zqWipDJ>hc{KKS0VRIWepwls+Iv8UNH`x!PgN_Z@7{59e)0l9% z8*>tsB~xP-NenU5XeC>+sF&UtZ@pULjrZP|isJK~Qv)&S`TD&-=Y5~|eV_L{4*wC( z{PfS0X8_u<;>Uh;`r${HIuhzQZsAow3|IY{(wtC7w}q2R-Q!0u`Ya^<D0F>ZSLQdA z`jpc3D{;Vw(-;gg$*>>iFrtn(Eu0tdC5PW%eb6wpyt+D@PA=S>6!1312Gp%nKu)D^ zrx#L7j>V3NL2<!;M|{y!i#mxH&?NB+j!MMPB%rHzB;sh6IHI&K;w45%?uj7r7Dg>x zl(>Y;cFGg(e;J1*4&so+6^uz-#kfQp+AX9cu3<tT&^<S|w79g8x^p_cbYpIEvDn0< z7io#>n6hv~;wGjgW>9DU;CZOc;+CD#?wYrieZhXN#l({B*S{6Z_V@Y#JGP%a&`^PL zJ^~R+9z=Ps+#^@<UcE=IK>>YPGtYYaj8PVD;Cm(|70ZW49B?eFMny(hil_y<uJb)F zBt6(F<w0%Kc?;0Dpg*Q8up6tGo@`~_vz^FPhSH}nM!$pEAK!v?frmG~`(ltu=)yE1 z&N_^a5|lABhmem_O)M&k71y*a_%{ESvVzW>lXAA}&4zsiS;%$BctjtMD)*--WbPt+ z%xo9M_6KHdCa{jicqE!dLD-u`$$y^fF!W7VuTi~biH)5fHI>feRM>|S-mBQPYJ#ny zR7=>6ln$`s7&#C}im0au<~_9FK3ef1wV&Y-9^o*)r2ZSO$dML?X@prC+QBJ!Ef_*r zD74VZpJ1iiI4E-P{mI?%D`q*RO<U2RDy{MpA`a^cJtg}i>)1s{{V5D>)4}|F%_Q<) z^j+j_Y%I{pXkEmbAlgpiJAtF<rlyB`){8;(VFF2{d7q(f9s_8xo4xh*BzS%jQyi7S zNKNr)`eY*dF>0Hm`gj&Wd)`~=@TLkD?L%b2S@vg`lRQVhjIdKfWYBqL1#O;f)|{i# zr`9YV{Bw@kq<JJiumSR<G*JEsz0Cn1b0plq<MC*vTYH=CUe&Nju#93@hf!{jV-HZ| z+QK@G8#`NHF|a$u7BU(b<peJg;bm^q6;5!Bv%5+#DR$=?J1{}KX=1<bAePX!)u0Oh zLej%7a=r7Q?-8`3Z>!d2-}i+xF8RzgA=Wew;rBHU&tD_Eqo`wIaN#|eW}q1aF-uC_ zVlQUcplMQM-bopR@i%lKwqc1-4hDbh7C%+_#P2e#TG4i`D-!ULVp<{^@YywfBNK8t zOm;lsIw6ZP2gPq+Bb3EHLfhE+dAA?##Fhzb1p&NGrmwIUcgeeD)_KnX6M()AkAo$L i>Kr?$;TV&9&_THBJ0UQKMcm;x>5QbpOT`eMv;P97@$ilS diff --git a/build/Grid.class b/build/Grid.class index c5d156a79d03e50c83c0b43c6914bf5886fda89c..e986e1f2d4bcdfb6d9f47e147987abb456f9a7b2 100644 GIT binary patch delta 1605 zcmZuxSyNm^6#ja)zH_-%!XV4A4iFNSVaZ?!5J`YQA{vNcNt`UgFqt5cEyE%v%9sR2 zF)nbUMvYrsh|7aX>0p6neDc96pM3Sf{0J?R3c;^uh*}o&aJo<5)8{+q>+j5s%(L#u z&v%!90I(fj>8L=H#8xNDv0I{9hfVn{5_@z=?A77GL&~)3sKvv|JfdNrTH9PqaX{@l zbabLiUF~+_AP#AGOotzb)x9GUM|Gs(n8f4iV~-B^QS`bX&?ga;IIbf{;bbEuaY9EP znpCEKwR=LD0UamtqzV{x!Gb=uJK};BeJ;k0Dx_1&geAr##^?W-5)<aIIHCDaWuOvU z&EG_Qkq<Qne3&%w6s8P3jnf9sU`oJQdGBZ78Jsp7Evfa-YM3?<!E*-A;+({J12cHu zzzdj_c+tR1m=lnl6Tx6;jF>MQxS-O%f+~SzGhk0HGw>>2qjNGa8K@W-sc7BbG8GJs zjt`6s8+aXa2IjG#!Bi+0%~WfR)rU9C1J*3xo2tCGaLK^iSde(fz`M9?;62Q0cwfT@ z8a`B)SpG)}^8%{O%hq}86?|+~+U}Zr?8h8hOE^3dHh;92n~jd2n!I#F6JgKbNO;V1 zJmeV+c*X(~lcD}Vm|py#KRhrv7^?FK0gLbm*hj+y!{ZX4D6FeyhAb9en9cHA+m`}` zW<VC2`P!z;a;gV>NsFSHI|uh<o%R7UptT*|#<P5Aw26GGBw82Jkqi&+=gnknqrZdV zsAfbOY-@Ba66FH811WAJ<2LL}wjDJpC6R*koeaKeYR)qeZxpGENNJC+33awIw=IhF zvKxy?Zo7^Qo@Xv23y31+8U>Tc7e7a!^O(gPSKuO<cC&m{Xgdo6wU~%p7U`k#@=(O` zD^P%4C`2nZqXS#0v?BD=ABr$=45du!W!fAjD`z?{E};yIyr#OUN5U#x5)QEnuSBi5 zLw^542^(vdNL%BK+1N3^Fop*ZH1ZY%htPc=yRQ4E_j>j&nQ~zT+5Q#e_#>rD$X$Y` z&AKx?(Rl^UE6DRNA-~RMt+uDw)lqKAH?U^=QtZAc3aTA$TZ$u!O^0UeVsY(vuVSn4 zJ8X_(%Z!yL-(N>^=`!0>gps`Bb#l3GL~cZ}Tk;=vLl|TSLpX);7`xM)o_p*zkyntC zM80M^d&=YgMk%|ir2raf_mZkke)E&-5E_`N8q;WEh6a+`$Z^>nBeWKJjL>Yc8bOjo z9%Yh$3rQXSXES>vHh18`xRQu(p&|gMVkpy><@=hBhzUWd7}!T!kDcq`6AZTTw8~na zrHCyf=jNP|)?E;VD@NYU84D@=^%{fXddlE909}-SH@iMa^>kAlT^ta9tP_re5<^_+ zd2yxhS|6T2jp9hbG6~{Kcw>og@@=9hn-K*0<zJATm?U}#(o2v4L3#-iBuEcQ4s8gO qz+M_+Wj0c$fX*I2#pn2pkJV1!L!s?Qrof|I1d}Q|6tlxIJMuS@<r-K3 delta 1909 zcmZux`Eyi75dJ26%x3eDkdWJu1wzP4Fa&Z5NFd80*$Ck<h~g%BBpWxoVfO`4l$96{ z@Qg1YiX0*s@j!#Hp%M#9!79rte?rS&p~^o(C=S1Q30LV>ZBI{6PxtiKU%x$B7jt62 z-5$LFpbF>Rn2!|_Rf(v?N{Ll&*wy|?iPdgMG`iu0Pl+Zs7UL-;*0``%t<5P6u~BJH zyU~J8>gqFz*o<dgc+QP2cwPy=y4)(!=0+ykC3Jeku+@!hbfiEaAkpQ<G_^@ko1h!h z)yAeaA&IaXv(z*4(Ic_VjY6zYi6TmiDq*<Mi|xu`M+y%DN^4Dl123ucyOelY;uVSA z0**F47>tU6zr!MCt`l2b)u_?109EGCVqvTri!@Z@RSkR4r{Oj9Yj_=f0*Q0){xrOS zeu3oraM*|%5r0pkZghs*qm!L@(}lM*?8QC}Z{r<_cQw3+_ceTg0f`Sam>3k0&An}H zdNeArU&8^F?*Km1a1b>DvD7aAc7J)$AL=My*BJ@#@V5qa4IkqZfn4h-5H9xyg1Rqk zc*DJ+_J*BpdXEtZhcq0*poULz*o7nN4Mzp0-o4S#<h|$U!ZCsIG>o;f>4AgKggKT_ z<*UYVfsFePX*ME(P)B`lAlR-)G<>drIf0WJzQAFLAq`*Rl!mV`;KJ7~e4~;RwQt8O zt1*|_25hJCo%xsTc6wUj>icn<TD$Z%qpoO!dBwhEW?n-iqW4BTwH|MvtuvrUJfU#N zV?@He+b^A}^$39i^QvR2nP;E6X5It7Ay2#R**bB>Zy0(YWayrr$fZ-=exp|{ddRTu zXHVQ}pG^x7^zvvpVgz&^n(dBXQxk-T^yp!+hQ#-(jI(CQStR1-LFYL!V*2FjoJ!6L zNZAC%7-~-HBoJk-c}_NNs-tZNT$CD#I0?ykgq)uY54Ccx^SQ4>Djugt2JCl0%1cxV z;3lNFf$SS(t-wMoQX!e?GWUse{?pv-+7&y4)Z#eOOXJ8GLYi-UO{%q*W!dA%D!Vv@ zn#ME8q5aWO<N|S|4WVGdlsC#}jGIy?OfyC?(=rV+O)~meb0+qYv;$m0N*&>hs&$y- z3B(TJGDkCkB>-L4Q97?>&^eR#ERJF}%go{TAQvlnWi9gfS@58P`)>M0nQj+{vyTJ4 z7wHUK!W6S`6a_d<eHgQGhEaZ^ei=ph1;zLSr50Qbm=wE(6bYxeg;I&d;wBQrKPV<- z>m@Sp@LOdkmOP;k4G<LaIz+uh_F9Q){7;`uT%WjyZYRr@tmWhw@>|9*tEFTF1tXZ< zXj_z<oOm3|#!%QYf}&cxZGj`r5mUCj;<K>jR-`#9;wWC=%(ACB<0#qK?+`<Gu9m7s zl%7Xf9CP|@wEW1Hm5dS;1w8vQccO1xAL`rPCOy!%|28Q`P9;M}ki~Ul8w{?%Zhos& zmv&?DUUPip7??E~bLsOK?G=P{9+_H+CDfObzs)>rA$xUNgY?}^+U=p<N8$}oA7q>N z6Z#W`OYwCfyh&CA^4WkX5{2aJjO&;}SRV#I|9`-@fM0@oYf`kN>@-CoH9g>a1eRi% zbyAl!r-}?uv9P<=pFjk!4AW<va@o8AG;qGWtZX?+<0Uy7SkEdvZXQd@kPQ>Fcp<6C zTRh6b344VV<{BFj$Gm>QkiXv#InC;SBSZQavWX#m47r9O8wpJ_!<K0oOTE?;mg5Jm iZa#Dv=g8A6tmD3bk6KUL21|BY@&!wFTXLr*U;Gzzi-jxz diff --git a/build/SudokuCreator$1.class b/build/SudokuCreator$1.class index 3f399ecbc2d1825ab19f318c57f3b411e73617d9..1baacf87b1ce5507197a2c71fbcb1c89997f81d0 100644 GIT binary patch delta 51 zcmX@bd5UwxA7)0`$$y#i6crda7!(<#8I%|l7?c^*8B`c_7*rXI7}OXXfjkce&B;A1 Fb^tJ&35@^% delta 51 zcmX@bd5UwxA7)0G$$y#i6y+H>7!(+!85Dt}5`#K}GJ_6-3WE`YDuW|~8iNOe#^fFr FI{+`U34;It diff --git a/build/SudokuCreator$2.class b/build/SudokuCreator$2.class index ec56a48aedc2c9ef5ee3d4d23328b57534699043..fd3f3227b9e056f25710f7315f437d4e6527d83a 100644 GIT binary patch delta 46 zcmey!`jK_RaYnY_(v<w{(#dBT7cd%6&SP>DG-qI8uw>w8ux5~Cuw_tSu$z38Ne2LD CUJPvj delta 46 zcmey!`jK_RaYnX)(yFSQ)X8TV7cd%4&SP>DG-F_4uwdY4uwsy8uwhVOu$_FANe2LF CI}COJ diff --git a/build/SudokuCreator$3.class b/build/SudokuCreator$3.class index f31b47bbd3abe67e5f97b491a00c24b590a77d71..373d6f704f668df224389673a8b16f1ba3922fc8 100644 GIT binary patch delta 47 zcmcb_d5Loa4-2EmWL}mmS#Jgo1|J4#244mR20sRM27d+}h5!a5hCl`vhTzFlSnL4j CD+tv9 delta 47 zcmcb_d5Loa4-2FFWL}mmSuX|-25$yw1|J3m244ns20sQJ27d-4h5!Z^hM>t)SnL4i CYzWK% diff --git a/build/SudokuCreator.class b/build/SudokuCreator.class index 1c0743a47e4536fdcccab0e44c8dbdf00a60949c..e61e5b57969fa81e254b9ee73e11f963514ca68f 100644 GIT binary patch literal 1981 zcmZuxT~iZh6n-`d+0C*bL<5Ro714%(ref<yL0X84p#f}zVCv_RtRWC~>1Km^@2}`( zZyfLJOeb{8Os6yUs+avY?X;!O*$oInGJD?lJ?}Z^IiK$z|NZhSfU9_^BZ+Yx=kbMx zFJ+w&GASe@<fe*S8gA>*Fs0&-j#gylFs<S%9qq`en9(pR+c}Y+({NYC*E$l&YWPM& zUd6nQ6LPv2qrifW0W9jozOSQzZ-w_j!$Td{@JK8_R`En+X!)sF99Ll~FtWC7xtXe2 zt64P#(XonM@x~RjCUg0E$yu$B4lXE&WSo+v;7G1wTeJ1GCCi;Rm#X9#Wy_ndcvWlO zdf_QJmK@Bjm>XugYTD&=-g7H<c~n7n(X~v^nkbbjUd6G^>SW#X9GiIIq?qpr?sJY= z3T|jAU`<){j;cHCrexmS*k$SU^%5nf+)7D7Ti!E^t25@h@1Ke#6-BzgW>#zkUC9Rr zy%T&r@6_F*b-N-V#e=vr;<DpjlyI1iS*zyFSQ2^7Kng<!KEWjg?Sb&=rnG?(TrzN3 z$frU|B6L)2yhzucGaKpYolw-wvgwvBSIkLn_rVTOH-%>g%2=jL`wZMQZL2ERG@bCX zZ9ezXla5=m+?@H+sk0C*vySU68>nDKL2T;X8~fcG*K!ZQj4(O3%o;UX^Jaa+Dw|^E zfY@b<EiwZJRzc`B*ajS|tN6}<3ueSaT>%Vi;JJYp5>GUUM@r)NQ8PmdwBUR%OPfK_ zI{YB^v<z?7Sw@DJJiK7>o$hQ}^_#TQER`mT(qOqt&6CDa(BCv58L~Dk+e`14@D;;U zR4}+lG~=wTJ2u5f_u$Vhtyo3R*NE2qm>A5?lqgU+3PC&?r$Bb>d|_s+YLz{f%w`93 zvL`zd@HE~onAJMd#X(>~)TN!l=zb9N>IZEjCO1T5?wMqV7C+3LNYpr#oJXADm?!xj zf#a`8*OCtNltPGqKu-;ALP<3c`jICE7f9O?CT&Fvs~JNZBDjcjQ|}~KmKouA`0cJj z)Ms^4kQ31qyxtV-r0od57JgBF>U*3nB7m=11YPv5n`p<;!S^gABh)lg;H`LbVGCLz z9@~VT8`?r^A+-skfwnEQ7dCNZW_T#x*+4usEX&dN5Iu-exfeS62r`UQ4DcMo8D>Bs z8PY>xjx}Kt0@Jl0raOS)asXz8Fqa84L6}LxWC(MUFnk6Mg*o1YIUz7T`(aK7FkBA6 zOcCY|VHOCpNSOPCDG=tfU6|jPGD+=p>L>Iz(3cC}=<SI8fU)p+pR5;$dixqU)xbwr zA{05@JJL6jh<pz%e&#i_MC51mH*oe<Sb4qu=c^Fu?~>7w-yHoc74VSs5sUShC3}Li zc#0d`XUNN<h%1yBL-b$hDy}O3KvlNUj}{f@<*cxSRA}3*>>gH#EEU)Og7!CkkKsB# zZzgSo(MYStw=lqBpUZ9Ge1Tp2@#6bB2QB-IUX{^_WonH29*@y4Y5g$UD#4Z><f+F$ Nal>CCSa{?A{s-20mY@It literal 1956 zcmZuyTT>fl7=AVh+0C*bq@3hXTUu;LC@HB@6{v++Fc_d34vqBSCRxHl*u~9;*8Bbn zFTLsXuFg2Ykr~ICdgZ16Mn}cx%PyxvlKl?v_q^}(p1#c=|NZhSfIHYzaRXB-hHzKG zr((V*hG{X($Ve;rOofd5GG<k%m=l}NWn@&eU|z--3bJCkAn*$c7G*4{=)jzU2MWHF z@s)}mvCBmWSXOZjD=NmZs$vZfg)Fb&Yn6_y3(JpWJQf&Qej+SR$#^P3%UG7-q$_&0 zYE&hJCr!(A?@DNnWplNXy<M9aUX>6^+a*K7J6Y2*7Hc~N!&%k~6-u<S;VzqQ#aK3; zyAnEL!`Ur;Pfu2KtDMZaj%k%ABy<-YLwAkoQpt2p+tMpDHP^K*@&#kUe4BTkwe^yB zLQ9@#&Y*WxJreuKoW6G~Qfs><BIX>kB%vke>c#B^eYfGCjBjM<bbm)TEeTz*_4D2d zel=&;oT4#nijbmS+-c#m?Tm_Wn2trG>Mj@}@~Vbm#5E*wOG2v$zT%@bjNz7slo)P{ z^Gibgd9wP9iAc^LMIom*b*F4N!cu{0J;Qi?Oo)pbN)X<hG4MdQjEXp>>CQ%?^=EE! z#&$}ElhwboYpg-jqV2ew8a7at5Se@P%6jw4F`RQWDdy$AUZqBJPOt45WnEY~2fIz! z8iUuc2~)!swl!3+Bg4{QV^_nspb|7xK}=1=6ZYZ})o8SkpBxE_w_nN7rdO}FMi8gE zg>l6$E>iTUBYks?#%$M1rRkz*s;pUcMYBj4^bLsA7<-20CeI=oia{z$7(N9}+dI3q zMfk)i{-wf}QFI#`;c6ooMsajAB*<)kFA#;DFIMb!Axs;U3i~RS$qZ-3n&OZrQ+T?n zS8A*+o1dAG3rClsd)@2LxB5kx+!Gp08zMWj_;%6+qRNZNJBX{i+Bf+60TeJm#5pFo zizC1<pvDvXkm7X&e&kNV2**|gIX0t-WsLBR6T(f5`g(nwSziRB!PmzM;fAQ4K;8l$ zIOYReXgkEGiBI^1BT6vP$+3%`b(5)w{_wi^>Uo|BFK!+{&PSDfM6!tksQLIln(NRG z(30Or>%vGP+Ezz<d_+vq6Z5?YQ@M|?(S8ynaG8M(F^mxg5)c>iLYhlHO^2ZAJWJE% z(QrCPGe(*eY3`9`nlv+{Nt1?G{z95=pQcC9ynB|W*Q4Qdj%HT;DUfD`G^?apBh5q7 zd~i(j8&lTAxaZ?Pp|6hqY;dZ-E%E~<gLenSJeueqsDr=D;~_%c>rV}&Iz!(>iC%dL zr8D$1uGTU5A}GB){PRVC<L@G)0rCKYEEBNK@e$hanB{uHe~+h_;yO)P1_gXb#3aK1 zLX|Nt{R3G#q+XMZA+eX(IWpu!R`!%AK#`0)e?j@1zDMv8KK7HAVl<*fqX)RgVqec5 yU?|USeShtw&R(k;^lAg`C{yDTY6LJrKSaw1>1PM?7UQnBvEzcD4sYT~<MTg90Fjaa diff --git a/build/SudokuGame$1.class b/build/SudokuGame$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e0d69b55fdb332ca25c9adac7eada46fa0699bb6 GIT binary patch literal 968 zcmZuw>rN9v6#k~SZP(?lf+A1~Vp}dN-W4n&H#IGo)R^eMp&iS@cBk2$E&2>TfluIX z6D&p&AHa9gcxFq0AGYb7bG~!tJGbfYzdwHgc!<>udXY8Jhe-oD6LBr4Oe8Ux!5F4Z z+{BDFZ)soNB&?7|(Znp~49pv_4cul(sXZr{CdDdO!@4{Ow|G-55x(qrjw&(q<u5u4 zZy6G6vM$I`c092iHg|>phVQx>;Wgz*@3rthNWUrS3={eCK5uiIA1Yh4g{SP*C}czH zOPZ{ws(9_7!ds^tW>toMO>8<5;dx05nuk(scr{lBj@PINwI}Na7A@StU550w2-FK1 zC<_A^v@oPWt4mOoZd>?N`Ihh0E!@L>0}m`3;v)->@x;OsmMuKhH%7`l+wdLN6<OlT zI$j{%kh)tiP_nRsXJ@2(P}7TKzVtlduem%3M8MD=HSBV)Vejnji<)8>`|k|OPM`$c zWH8U$WEiOVf-4b~{5(`jdJOTr9#txc7DTO{ZbYxCdzHax2&KCtZ@y608hO(-+4{8U z%O*o6-vu>Ml6q>>zRs}sR72RRQ`#=YurBzc9URh}?N>XkXsg_#D+9rvJgkTy;0>|v za91`M3Ky2VCYvqk>E(78e_;-^Ze;1r_JM{3*59x9L{B+Jzad;E^a^P?vNd8BXTO6L zj}iMu7Q<CKQzU_LI)^cG8vmK16NGM@ApY(ciOLC*Bvae-#UrpI7#*ZL$jr@mV1B{q zIY>Z8TOC~biVPdHexOIEibbh%NRvKEXO4=UqNFqQ&C}B<poBTBV*%GF!b0p1N(SNv fl1VD$dc-h_8zd9-mm9}Kgp5%<HAO}DlBCZ+l~LBi literal 0 HcmV?d00001 diff --git a/build/SudokuGame$2.class b/build/SudokuGame$2.class new file mode 100644 index 0000000000000000000000000000000000000000..ecd042514702036808f6c495db832b48d40e1c95 GIT binary patch literal 1211 zcmZux=}r?-6#g!4nKBNt$SNX55lSf(Q2{B7P<G3b)R+)|4V?=en9e0Lx4?V&&$lqa zl1TIcd?@0%GbL1Fo8IL+`*+UmpWC0m0nFfI6WZ`nM>~czywVX-`*0j18j^90>WCqw z&@r{7)iU0M1SWK3Fsb7;rgXZ#(ePHow1ydmMp?4`p-BcKU#M8(w6bBAd6w{b+qLB) zLrbz=F#4GxniCc$LEd)xZl!$4y-(($qY$$wZQ<^7??`xMZZQlb^C#xHnK3V9hM#j+ zW|jk$HFeG^XUzp^7EgD~vziaRASzywuiJsc`;;b>9}2PN79HW+?(q(nC1GipHSivD z4Dns=%T3`+10Coz(51j0Wp$bHFUTOXt(@jcLipTc$kdCDNKy<X8Kt#LB&=OZ?)p>@ z0a95EuG__u%{@P1@x-xbI}T5T2_}-M2?9nLT7z;Olfo6GM^PCfBvI*P4a{S~z#^6m ze894S734Im8d$@+h7ALo*fOxK@;2@ZADW`;mg{ma=a|0F{eOb&9iH%_Watm#KBPHs z`&5I<UB7oo_C=4IlIMkKtyH8GE+v^%%}CbTRhNJEOW47BDCnEdrDE!ioRQG<j_acb zgobKC#~=G8aj|#C-BsIk1QFC-HzYYxJ`-**99z`wV=fDvS|hoof>G+p(J&ud1dURY z>IZX66Hpse!i<29noj6v`Op_mMe==9mKZwj{M6S)zCxNPjzi>Zc(%3fiE<da^FQP$ zCiKdgMQkc%dRuMuHW{9PwYI7`q*vQOzb<qW+C!%obXSO;8v6m3x<<oyx-s<9+DJPv zOY2kg)%3qYBOKVeLFC{X(VZK_4%!=|zn~pN+T(?5H0`FxtI*S|ibvDY&geG`q^mII zVyP>zD>V1Us(4&Qi@H|Ps=_q{;fB#f=Pcqhmwi~E<QFl5C8TLOr?5=l6&lG^JR>aw m>=v6EA{t`!4}ku_%X19S9wo~`DopuJ;2rHcCErFnef|P+(j^`M literal 0 HcmV?d00001 diff --git a/build/SudokuGame.class b/build/SudokuGame.class new file mode 100644 index 0000000000000000000000000000000000000000..48104c8784c25fbd6d162d0527e3e4af3a0adb75 GIT binary patch literal 1806 zcmZuyZBrXn6n<_JvYYKvAmybm&=zbp1SAq`ivm@MEe(d3HWY~Xwq$Q%A?)I2L+khc z3P1X#<2Rjgf+I7IGy2Jo{u><?pPLN@Dx1l<_nv#sdCqz6xx2sr`_s<=?%+!UuVKtU zKi<{xo*KuMm{4L;!(AQk8_@89hA9IErqv>+;X?zhxTnN@4Kq3(DEqvQSq&c<=)|;+ zLV~I}1J^KbU=#}m7V%K&9_c6=$YM#wdaPkt+1%5xqGF6`SQRkyt}Fdq#i~|iRUkg$ zxK40a;9ROutl8dnZG3Q9AeQrNDbQAMTsdFcS(pBjwO*md+>pVN6IA4qd=?0FrUnaJ z)}EEASnfuq82FC6F)q+k_N5ibDcg1e$8)X9bS(%xmw3^X3f~d#7rn}!47UW@LtVkM z>?4&?+qD^H#&>Li)?#3lx96<gMkX3c8a`&CJC@@Lbf?z-pNB#+ieAkx%lnQ>zAdb9 z#@dl1Dr;6fFRQ_vR0UQ|+{Ei9hA>QhXn9?kni#>bi8qy4Q=1o*@3TzxDT~d_9wnQ2 z^y{}(uV(vnxQS0l)iK(QQKkFT#Ao<iAbHAv(Q;))Z8Q8AU`|~PLanDkX4>;@=@+c8 zyc)S~VJX3;GFlhVa+{XFA^p=ZSz66|zOpLAHX-rE#0EAsI3~8RZK8r50hn;%nb=in z#=|rfRgLpkB@5``;&Gl7hy1rU(mHX@+}Y)cFyYkM+_xRIlnU8ss}9Syr^>1&3QjeU zY(#;9rnf3s?nyVuoVI8<M(HS!K4F^kc6L3N=Htx{RQ|_Gfx$D4Ph`5Vz9q|aXP3mQ zjnY~6(Ip_m?DVj5olUN0Y;2{>$x4N6rSkc~f|^qu3w1hom#s>T{ISnTowk0|_dRQ2 zgTB%>D&(H>Sa_m%WW-llRu)y>IbJv3;eNhS)T2SDZl!#Kt283~0Y-XgA0k~x<a@3J zQk3Trr8LpP7fOPw7zSw{`d#73Za_2{{qChhyrD|ckT;=eINCI9W$YOLE&RuiF_baT zP1yq-7m0R>`S8Lt-B-DzvKT&qR!ZvoNEC(+V3gAPI9G>xfY#DJ&d&`G)zP++9!_@D zkvxum8FBjd@fCTM7^9R~+`!vR?-o&bH_t@5&_wA}C|zfvbf1B8hbUu2nIXypqU4D( zOO(t@lwVj$3-g&x|A3x4E*7Gbz3qu_FcH1mr^b<?-o836)p7ZDj3!rlvwhjF*w@gL zy)U45#eM|0uRf287l(g5k5K-mDvdPGYJltkbCmOF#{!vL<as~DB<DHm@>s%Kw3tBr z9~c@&#oy4xAqLQ*p<k^94^)G8NWxF3B2;O}{t5jr=AIyTx0;+~S&izP<N>bn46YXr t&|hK`4XhmVA9m0Rvsy(5O7wWAk@0PQ<G{0t@S|jqD@JL|IpJf3!+)Y%brS#p literal 0 HcmV?d00001 diff --git a/build/SudokuUI$1.class b/build/SudokuUI$1.class deleted file mode 100644 index d56e53b3c2a32800618a4431e7511d3f7b7deb2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmZuw>r&G|6#lliv@zwXf+A87u`QQ~cLl3ZF2c0nOw}3v7t*x^(rhQ$6nzGtz$fsx zGgus%@d11%9nYp9{4g`gIp^DR|2Dt={P+prA(k@eK~6_6#x+dnh%0$RM-t;1jABy9 zO-w2CmO9JpgcZ^#>X^oihFJ}!hT9A&x$6Xzr0A7eSQq=@>x~6M7ah-$C5CMN3@*H3 zNR&mLGxSy*k8g#|9qzxfc3g#6wseH|lKbz4-{f_Mv3zCEYFnmtAWh!po-~&tmsO=N zsASoiwCw$=)jG+c*F@;se9ch_v#0IMsVr1r)w5j@I9{X5<*uk}m^W|-cNx-KJdiI$ zAPw|mz`&pajc#~NxNYuJ-|N0pH*gR4H9RnAeUA)0#uEbzSTyidMGRN0T*G%<m**&7 z&hY}_hBVuphLVA2cuqSy?P+qJDr|Tj_sgyo1Uz8qi-vVAuVHTQ>~UK%jQ)52iW5jq zk<|EUI);AR=a%GAyUU@J!efZ%)sj*{L<@PJFrnz_1~O<3F4bgonlDt8MyF|8v_7u+ zqREiScR`gXN%OR6vH!4lG*H;8Q`v5cA=T~&GdQ3fo15FMh)>I-kp5s-98`G_SPj17 zSgvR=6wc9G7R{FM6s=v#&uxK-MviW3FK9(zeSL}}y1+4d2XT?mOQcPZtq{F9{SB;m zgxFWI7%tN{MG~}sh9L}}_<thr1fi?Ph`&8TqI!%Z$<)?t@eu3~S_kP4GBdLs=$|oi z1`?1_RtFcpAj1ZX@5riBv8dDp(xflbw@l5h;5ybZg$=qkn<$}5$TqH!hk@8{lr+RO fB$L$0)hNRVu8~a8k9Hkn5i*K7k~%frLz14q)JD^m diff --git a/build/SudokuUI$2.class b/build/SudokuUI$2.class deleted file mode 100644 index aeed762d2ea667909f3e9f10b132d52834e111ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1201 zcmZuwe@_!Z5PeHquABz~0*b$=icm_Sii!$|mQtixs!7#^`15+V(39&ex!Z!@!~gsi zCR!4WegHp|arUl_)!3xFw{K_O%)FWX`RnTs0Jrg|4@0=3V;GYfuIh-XeJY7*4e2Ci zbR>{b=&V|@YMJXp3iCR0xTfPe7IZq^&~Q`3qK4ZHy|V5Elh+vZa<yrT{pPdMGNCJu z=g3ut{`4Ps<~c*WAZ*TXvg~-g(rnbY|J1Cx3NbC|2=58^cZJ{JHp4`^{LVZybLNrE z@k8#(Ts|}@s_$h*)?byTwZCm1v^n&uX!;i4a1>#GC!Kl4LIH}N<%+=Z_O`jK3tPh- z19!2+kgV`PZi+w}7{RE4F$JDcUhi|k5jo_x6lI|<M8JK9T=&&3-B{60PFYpV1~0ys z+zY500;KY|wBcBFhx<Xw=BYj3ab2E@(o3Z?^90N=42H$JCWWg?pQ19v=tiZpY+wcV z46Ne5fd|MNSVKX>x`84#G(0r0iIRaWmABq0dvbxnD0v?D3$7UiJoqcb<JvoJNrnqy z)PE%|I{{UoGEa8s$lLO{DS26#_F7X);ZcHV)rNGtQC+z&zleI*4TT*GxKt{2gqe<9 zJ38<FBW7e4_Ie<wi=)Q}+*@}{SCBZTyT+p+8VAA)$D%}?-s7^$sV$P*Dj21no{92t zMA#%Xp+PvURAGBS2{S@5+BOkSz7`0#Dftsq))_`RJl%B>S0oa}aY>wqzGH9rq7j82 z{f{_G3B7q>lbXtyUepl1NQP5jgM(@Y>8<wAe+;JyJwsoY>8ubvGy4TBbBvx(bYd8% zwU>5aht{(=*S7xvjc}m!4Y8eL#J9g8u`}Eo{|;>@Hk_;;qpy;kYeCPl7EUb2N8=wc zk!`_PN@PBReMbLyqJ@DLPO4)IgDPB47;XxE^!*Y^yrOWgDfu^;##>}zVgWVeVbM5p poF^*->=!mQ#55%6?c+koauE}>$I0^&6{dJoxJA28$q&&^zu)bUA`$=q diff --git a/build/SudokuUI$3.class b/build/SudokuUI$3.class deleted file mode 100644 index 433bfdcb4390836d81f9fd121548c17038a9eb09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmZuvO>fgc5Ph4Zacnj;loBXV`au9EEp?#>4n;^%l@iG<l?vP)dr4i~b>&^RBL51h z1jK<Kz>h-AI*xk5l6PjFXWqOW&!4})egk-cEgKCiIIwZo!9Co!(Z-^K2Us%4vP0pD zg;fh33y&D;`Z!jdO$Nt5%A@p4{;|JJ=*w8f`V~Xdy@I=+7-~CdBp7D>Sc-%EbRe=1 z!5}e65b8LUha&r&W~U-zSaSW7;5_hx3+;(>A+`6qNZB?1wjpzl(mV^r+t?5^r|maP z6%p>rFiBM`hx<Ywr;&xn98cgfG!BH)?^2~Xu7Ptj;acc&^svUUj;9tjI6Q1}JcG;e z+|)Qz_Rbaq?@KANog`37D27%cGYRC-dp|f4p=Mb8uW~<DT2LiPn9?!KhnWbp*fSr< zzR9&tB}3IUH{?@zFN<j;bHg(0FdvN)F##KH*EgOSyDEMG@t0FK*rXMMrG%bT*zTmj zbg<8|SeCexpG8Irkztv(zy@6$tkp7eqUEU2+r)K3XUSWo*dR`C?K@cS2P)qvqH)k! zCkv!>-oRX$->2*<p({U8-S1t3U81%=#!TssQ8(Tg))h?~GgP2ZLryI(uz;^5Y(()* a!Yi1^EwVLQ$=kS7AZ<J(OQK1B@%#f<Q<~QR diff --git a/build/SudokuUI.class b/build/SudokuUI.class index 23a50d8cf42a3b7e5400feb0c18c4c3120264787..94ce4b1c293af16bf33fe6d07cb166f1ebb164d9 100644 GIT binary patch delta 962 zcmZXSTWpj?6vuzF`|UToUnT~(**3dUq?DVzuvpo)SZSqlv1%18f>hBi?E(dQVOeMu zwOpzwqFg?_Q0^5{;tQ#om1xq$H|2rE_^dwp;1f>-C1N?#LLlLr%zw_D|Cw{X`JWk$ z-YOWl^8XKGKn)i>=F=D<$upV-c3t8LEVZyqv)r!FYMM09d3ZeU5#fah&Ae!>mpoRm z(poRuz!uFakLYC7E7r5x!Ws*&T3GAR%4?eT*F6$6YSx8$!(%FM+I^dav`xO==54oI z$(x|VZZnz<9<$kKJ)3MzNnTH<$7Z&K+3L|im*u)OJ(}Jlzh8B>X|nz$^=MIw?S{vx zGCaWo!$O`k<k;c=rKSgW(&vW*m2D~d4JqEzylvRUJBD|8PcvZH%^t&E_8IDUN)g?h z-kDCO`*O)8on4vk?VUZ{hC$vpe87Ighql&7958&$LCq(IPdTJ0@Rcg?F9s4NDGnQs zaMa*)&~VI_`i##FU)UU9a@_wT5TB7^$Z&#_hEtr@oH3l`oC3ozUm4D`<J)-fMj-KU zdp48KWt!8uT&A%n+mXpCs^>Pz=l>d-W$yFW`472crAcWx1aPb#VmVe4S%WCKeYIeX zf6d*mYW+UlloF*TV&vkM0rd-721=KGM<7qUIapsjB{Iyv!D=VwSnF^9x~>~2cG}$D zA*RKgNh1~yIgaaoL&;@k<tZH@bthz!aqeRtxqB#T4>|V^#X~<bdu?&dvBhON-!muA z-12xR&tq$>qqr*O#6v9=4HA^6EKhm0d)HqTbB72=D@F*%+{;wvnK$UDk@3R8pr9U| z(4|(el|uh`xOAX`4OG(4Jb401j*4<8M76I)ub)J#pGB?T<SqRv8r@{3^rlp~ERun| z*T^kAO}+Y$u*?okB3?Aka<nF?iC9XBQ;Cu!#-$Ap5P?ErG!6d{zDY>re|q8v7vBbH C60)lR delta 832 zcmZXSYg0{87{`D6+}1vORx?eUF*O=SD!QvvQHnx}a;qdIjylpshfXJVp@>|wBXT!P zFT4tK7>p0#MIXXTUw|=^wQ9UFd-ngi{rCS_&wBREf~mNHuYW#%0Sb9;kxiMGEXoCW z+HSBEY}BwxP@(N+L8YL|!eWbsm#to^snOmxi|y>t-cC*2C8)KCn`hPOOudHP8X7e0 zv1nwkpry$ofigj}$v%t4wCH%hh67qWpmh)GQ0XSnDrmDvCa8l$x}DN3q21yz9VVR? zrF7|9x8R7NXY|{2QAlvqz^V;JdRv1P9o<2LnA%8Ns4G%mmDL&O4@mqRljN{Ul1rXs zHESfjgzfLfQfD6#JI0Zj>Ze~5j|)ynPI5|enlpm4l5-45&T~OhM6n%kELw7rLCFx8 zB$u`FFjpj384+BQT<3;8?#OBIb5nAQ+mca6BzLr;&6wmag9Z!dPgox5>kIW%cZB<b zJ;7ex|DI%=`;rGt2p&ov@z?;#6P`+*5q_KG{Nb?MJ)e`Z)IPz1OHZaemmW@8Cx+6= zS6E<Ih+(79o)%U4YUVkP8bMdUs6(g+-lV<55hcFHS(+H@eZfm-fy?L8-k4o&77xU` zKat#+=yPeFdR^~HiISQg?~byfK_?P(eXe+SZHD4RSs5j*!1FJi>+?)t#-&eU`aB=V zh>|(vGA3uchMWqUr&NE3`Z=MTScS_lNmAZ&wc=#urQo-lyfKk9x=ANYhFV58BWmJT zit}1Arqs-9)t8lcX0QY$#&1kxR;@z_vIJh8G6V?*8fVot{a0|Pf}r##<}cjpcGk_E GYW-gdt&%DL