From ee478f056350b1383c37cdb0a0f5daae4a8325d9 Mon Sep 17 00:00:00 2001 From: dick Date: Sat, 6 Apr 2024 22:10:12 +0200 Subject: [PATCH] Auto --- Grilles/exemple.gri | Bin 0 -> 36 bytes Main$1.class | Bin 1297 -> 1113 bytes Main$2.class | Bin 610 -> 855 bytes Main$3.class | Bin 0 -> 606 bytes Main$4.class | Bin 0 -> 1293 bytes Main.class | Bin 1603 -> 2029 bytes Main.java | 83 +++++++++++++++++++++++++++-------------- OuvertureFichier.class | Bin 0 -> 1311 bytes OuvertureFichier.java | 27 ++++++++++++++ 9 files changed, 83 insertions(+), 27 deletions(-) create mode 100644 Grilles/exemple.gri create mode 100644 Main$3.class create mode 100644 Main$4.class create mode 100644 OuvertureFichier.class create mode 100644 OuvertureFichier.java diff --git a/Grilles/exemple.gri b/Grilles/exemple.gri new file mode 100644 index 0000000000000000000000000000000000000000..5637e4d56cd8db38199bd1029b48b5f6c94025e7 GIT binary patch literal 36 scmZQzES8asMvA(Oz{dKJX0N~gS1ONa4 literal 0 HcmV?d00001 diff --git a/Main$1.class b/Main$1.class index f029fb0295c8861a7da18db7d0feee97cdc2a1fa..4d464fe0844af70e129504997a3a3c35b245683e 100644 GIT binary patch delta 676 zcmY*XJ#W)c6g|&QYR7qnG;JvqTHG`Z&Q~3ve6>LNOh};uDN+Y2kc?xch9s`+IFzXq zGm1PhGeAZVl!$>P8$SREiJyWH*XhLId+xjM+;gtpbx-*v*M9u{_8q_q?#I9}uV5Uf z6{uKHkiudNX)MXeC^!R6K^8d$r;wLXP*B9O1YN>e3FjD&bd6@(+;Qx^a_?P6n9+K_ zJyF8>;2|sSuW($zMUJCLa7^Hmgv%UPLR{ro!&M2_IId%zAyaYfX46t@e%*QDtBqm5 zJ?y)~zNH#n%TztzG>0ENGQPoa6SpMX=D35q9A#7(Qq|V3<9YToQm9)h^?8n8cY|et z%M$K!RIw4P3Y!sed%GIE7WDn(bE9kQ>E27b-OxA6uFq`K{q4rPgo)wW!tWBKmk zL=5ANuw=Q1gEB<5EQt{{RMMLU>C|3%9jnD4I(~;?`oZYNcJxQC-R{&nu4S~=7$&Ja zXXyXe$$U3tHQUq}EQnKVEBGmB(~4o5mgl8Qr4msza(tZK3f_oM_Bm~go*yic2;Y}> zDbP28BvmIVOVK&3D7pL>u-sP&AL+y}MRAM}v~2RiF^VC7hu9)vHuo9q0OA0V%}0N~Nx}&IS#u~+rqC#y5Rm@?i0*|^ literal 1297 zcmaJ=U31$+6g_LZmMzpIO+rd(0%}NG+xaksLVyHlzDa5~Y29H4^0bk+sajd`Xe9^! z2s8Ww;E@@UW?+VwzV$aT3}DV9YFO>1$u@3^qm@t)cmfK-tthie-nVCL2#=PkvL^Cw_Qb-`h5; zEGe$~p`Y-IN`X!nAji^n;(S{$YduiuL#Si6?VKyqg#E-%Q6+epNj%o|M zUCBV|@+7INo(hxtT2``U@)ZMiv6V>gX;XFw7qPM+TVkLXI$4;i9QI`&`p-=4e8osUgx~s>2pxe^D8uNXZ;Zm4 zJu3e|QH7pL2|f}tH|$$!J9?UuxbaH$YZ4zeoPZUpE(wrtQFgm3qyZKO26&0dE93@E zpdY6zd)5EhE+tXFZ8UV{)j|Sf4gTBa``yftGUSh4(vPE)rqWs-t4&`9(Xl{v$e$Y# zdlnjB4iV@#fa3AlPVh+!ypH_XnDHFINZVzR&g1*e@tejBtKMR^ziifPE{=L}Q& z{}RfF3`1L9n+V40mMdOHPD}W&dCQgvH$%&F4}|~L^BvJZB7{4_K~SGb|E8K-Q^ z^|~Ze8(!p_V#ksMnSE}#RjG@}wq4Wq0ur|`!XvM(psb;SMGYE8HDs}*;J${cjE069 z9w=DW@DM8u3%kB$+oITr+TOdU*y;D&e$VgsM3HxeSqvi6?0*QV3La@##bXUmutwHp z_0lqfw&%LS-?DiSh=3s{1sOJ{Hoa;c3o~SxjiIZq>Q)d6I!P^(R1};z6!d1?%K=9t z^vP6gKB>zVjQ=|b2BmEUCtg5J$?Zx`9*W2x_+c3BNJ#htn+(Hxx!K&iq_pv#v^We& zFCxA9L4C_J4ybrY5(IZ>+7q#l%P`eGkx4cg$Y0DaHvgA!m7Asrf>Nzkqja5$zbPNm z3^H^h8AiZzIXNb}s|otD7$Y=Ct9jZ>M6E1-0jqpP;v?-CuF*e55i~z)2qrG_Hz_+w z=uG7^*g2BlsI#9iJf1p-vP8S|pW_7#Q{pNV8s-Srh++fNct*!32~Qx80>vSE7SmXu Ll@ywx2&8`l4!XvE delta 380 zcmYk1%SyvQ6o$V^V$#O6jauv7dZ|{^dRd4Yi(3(NqbsSKE`kgM7mbK3>nn&)QfMtG z_yE3udmltRBc-^Q|3A0y%*>bj?Q}kW-adc>s#!edjLiFFSnyc%aac04>{0eu^;lE* z_pPLI)7D86E9_?TR1um|+R~|xPlk>B+2z0dNZ~g0t-d=}6t{#Kb#2-6{PeiD9#CN; zz-K%lAQzBlQ<1xf4W?U(PUE&I76K-jdbw5)9roq185CKpFf=HL3oReAv3|QEPqH`iM47ixCvRR0Jul1U9W$DQG`UHj{M9b{1y0@plQW z1qFYAKT13|6jboT+~=G#=g$54>)Q_iFR(I)5VyqKj!?&)5O*U~u_WeRh~*FuLOfK6 zraEg+yv;JBP&qj0E3~9kXj@qG_M*{9_WsH@6l$-mv*l}rg$^Yn~w_RQ3{viD|oWlQ1>A&d6%6Q7!G zD+F@`ZQWBrkZjAPSzcH-8JO}gABA`nqm9QgB3zCUV?IU$PZZ|g8_{cZW((t`*o<)% z*EopKwVx}*edmnd%ydzhf}b$clxa8V?GBGjS}H94S7u_1(h$j+g-RwIk8OHr{5H#_ zr{qxn=#xxR>8$SK8JAKACqd9^iBf=`V!610hvL|6Fp>KBA&Y-&MX9&9IsC;2b z;R4Exhd1HH| literal 0 HcmV?d00001 diff --git a/Main$4.class b/Main$4.class new file mode 100644 index 0000000000000000000000000000000000000000..2a54235686b809c47ed5cc9034bf3f49f5ed86c5 GIT binary patch literal 1293 zcmaJ=ZBrXn6n-{Iv&p&z3P^pSx~;TL!b^NXQ9)avfM8N6p&bk3hs)*yx83Y!_U;D# zBhL5>)Q`>xWpu_b{np>)I6gPYXnYwz>^bM2J?FXSp7Wd+zyJIzfO#~E7(>a3vJn*r zsc)g$n0P;RIg`{UFk; zzAlrKsA=Pli@R8MF@dWtUcsv_Uc>7yCb42;)x|xm*;se6fzNDgy4b>sg{uav8VL5F zk;DXBNmbC4u?4T!MlXK;gN}k!dZHtJPp7{B{Cn-m&~x!QYDU!AeXqq~C@uXcY)b82 zcX1!vHg;S*z^;WGo2_=FwPIVmrtD#+%~*PY@OpEcWADxDrsgfUn_(#9)j()1HNpR? zar^Lz^b-r$x~_kAv8Hq)naPnDC^LYgBjumSc%AMfW(RFE)_v3HY{|$0?8ev3ZdoXV zB8>KwAqiu)*!5k>4s>Kn;Gvkdsl1Ukqo*m0Hh|@Q7ClHdUKGnVYhbN;(QeC-!=LRB zf1uloSx%i<70T|NC7?qTa|z=F-0d3D6zxpA_G2cgZM1KJ1DR^VGmLrHAYN%x{=ip!dNAE-hDnf^~uXw^-t7 zAvclp+Lq6^i3;zOBc+9QY=f)gh2Vdd_qike;!$z)vEZ*t@OyMSV4!3X{OSBx; JJw^=_{s1?nItl;) literal 0 HcmV?d00001 diff --git a/Main.class b/Main.class index 2df9a15dadac358d54fd87e551812e04e5d3bcad..63486a8b1280004200c8c64dcdb76761fff65aa5 100644 GIT binary patch literal 2029 zcmZ`)ZBr9h6n-uw*=1P;qJR;ltHl~gASl+hpjC{bu?Z?cFj8$V$pscSyK!GY>HFJE zzjUTw+aJ&l{nkz==`=I_k}sY9r*?YoMn>q^Wahq{dtRRNoU`}-_0R8r0634YG-Pl^ z!vto!a1~h<*EC$mtb!XVZfb}jCx=^dct=5ALpNsRrXYto1-Dh)(a|4yo#cR zL&&LEP;gJfAZ8RSYDh@CL1{OLB^CFjeM!XwIWH@CSHlTBl$MVayr*FV4^_OcfNMC7 z6%}O#6%C^hDpsY*nu>J=rh*LyJ!jj(&05^^gvSuOXxgU#HbZCf%pyZ1>r@0oPu{e} zTu@yR?gC%2ND`@X(`Fb*F6TG+CeK*hUdt4H*Rioxm-NSyRU9Dp0I(8AivOcuU7QOe%P+ z!$Or|I4_Kv>#VuFS`~&=HMmh}?Nqtzwsyu9*g7247~;~y(~P%87&EtKNuPWVXV)F` zsZkLIDSM6;_@-kUmB1(l73XmvW7Tv#fvdxV&(I%c%eVZ@RmZIeH_x9rfv+RLrj9K< z{co5&UlA6=m<;2Y#PPOa38PA^{%=fUO2;#}42Sjsz8d(xLzH*V1in+{zWF2|{ILSJ z0~uj|c6Ycfg`tOxL_2FaTf11d@c~10&T;*99ozVjykv##3(D~$d>r~T?UA!G_fK?u ziqCdM=V;O9h5Dw*DIsygH7!d>)z29Y&bM}C`(G`_(fFEh!!M;@YC7f6;k>YD-V_TC!{8pP ztW&KyHq|J!7$A$Aj%#i^w$H5@%UrXobVlj(N`+zc<%aFtB!(B>7|y&@c@Gb5w!^p@ z#a*PLw=aNX_$@z2x&N~YwfhLnOj**DH>o;w$uOMU6HROq=FEPL&@d)13d!nWxybMB zv+z7pquYZnybN8u@)rT4{+gumJnfFt%xI2|Hqh}iEf`*>G1eBM3m5PPtx1)2lWC03 ze*6WU@kkxfCSs+y(tw&z#p>uv^|5dJ@Mj%bs)_DW19}|?Qml@HP4txFy$$pg(w%k0 zn>bX8A8w$3E?f=JYAVviAekJQiYCZ!f|f_?7)nIP>NvKPh$blBv87Zxe!Pz1R3aLG zMb0EN#+o=$N;Pn@j#m@pWkhaH(dI=m^Egbf6{ye97N0ldqBS`;^gTwxRL_K|N|>Xi(Xj?ngfpFp#M6{bdMr$emSbs2T3Ti&sU9b)WilOM zWiAkKAWHzQ(JOeJVBR2jH|gcd(fM6m!UCNvl4J=5+{Zi~(0>_IWYrD!H!dldR&cRb uCDq*whRJycDa1yHegk{K+-@6m;O!8=W#S7sicWeR3B5@`W4Xfc5|f4sfe0ae%|R!V(wX5dR9|KS0c@RZ+wqX1;G`-goBv_PswR2X^Q8 zzkmG=SfOF@JcTh{K1$8(gp$r(p1!#Uur_ zc-`Ql$(n^j(cqHB442j74U=_)4GWhyRo$k+6_d9zim+s|rTkT8-d5%vlWPXo4Yt4e zqcU%8H``&&Uk~cO#@Ln@G?wmo_dJ^y$QrzB^B(2+Yi+KxWAi>0gBvzgKF~P15eD_T zpV@BjHuu|^y+OAz=!S!?pYiVbwM?sBs|_BsmNXp2_gSHJKWOX~uB?aNUFnn_Zc}Y4 zHXrhlhP~|tt-v4Bs>H`n?~Q*LneBXnr!n;(zO{A~H5)Se^+C7QZ10AOT*;U}tvGJl z)Y#RSkaW-pqQI*MEkArxv#e@-n_KK@%qZf5cRwnuHN#y$EP0waXTHTEQ8lBhE z*=jY;=!L1QfX&j=>R02*)U}!E|HpIX_&eQ8>7RPF{dh}X=~yj4D$B9mRKHKp-pG}i zWnONZ`bN-1URG>QR>#C^;!~%3Xg>?kI3+ec3^K+7dBIYuITAG__wW}+oY4gR5vh{G zX~BJrievWVvgFg91gp=1%0dtOYM=2+kBOr0O3kFeg9(TFI2C8A$8<5}ruxiO78dh8 z4ktYGIPdte@CuH(k!fakoI-F2r z&B<8*Dk{snK;}0^la0l+*yHjn=9mzLhveZoT$Gv;hvh0~<>%*!Smq0PmtS&*uQ*H0 jIliUH_pI_G=jn1mj&o6XM_A&dct?;sApmKl8jAl1_{q_n diff --git a/Main.java b/Main.java index 9ea73b7..2f71e29 100644 --- a/Main.java +++ b/Main.java @@ -6,53 +6,82 @@ public class Main { public static void main(String[] args) { System.out.println("Le programme Main a démarré."); - int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut - System.out.println("Grille Sudoku générée avec succès."); + // Création de la fenêtre de dialogue pour choisir le mode de résolution + JFrame choixFrame = new JFrame("Choix de résolution du Sudoku"); + choixFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + choixFrame.setSize(400, 200); + choixFrame.setLayout(new BorderLayout()); + choixFrame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran - JFrame frame = new JFrame("Sudoku"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - SaisieGrille saisieGrille = new SaisieGrille(grille); // Utilisation de la classe SaisieGrille pour permettre la saisie des valeurs + JLabel label = new JLabel("Choisissez le mode de résolution du Sudoku :"); + label.setHorizontalAlignment(JLabel.CENTER); + + JButton automatiqueButton = new JButton("Automatique"); + JButton manuelButton = new JButton("Manuel"); - // Panneau pour contenir les boutons JPanel boutonsPanel = new JPanel(); boutonsPanel.setLayout(new FlowLayout()); + boutonsPanel.add(automatiqueButton); + boutonsPanel.add(manuelButton); - // Bouton "Résoudre" - JButton resoudreButton = new JButton("Résoudre"); - resoudreButton.addActionListener(new ActionListener() { + choixFrame.add(label, BorderLayout.NORTH); + choixFrame.add(boutonsPanel, BorderLayout.CENTER); + choixFrame.setVisible(true); + + // Gestion du bouton "Automatique" + automatiqueButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - long startTime = System.nanoTime(); // Temps avant la résolution + choixFrame.dispose(); // Fermer la fenêtre de choix + int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut + System.out.println("Grille Sudoku générée avec succès."); + + // Résoudre automatiquement le Sudoku if (Resolveur.resoudreSudoku(grille)) { - long endTime = System.nanoTime(); // Temps après la résolution - long duration = (endTime - startTime) / 1000000; // Durée en millisecondes - - saisieGrille.repaint(); // Redessiner la grille après la résolution - JOptionPane.showMessageDialog(frame, "Grille résolue avec succès en " + duration + " millisecondes !"); + // Créer et afficher la fenêtre principale avec la grille résolue + afficherFenetre(grille, true); } else { - JOptionPane.showMessageDialog(frame, "Impossible de résoudre la grille."); + JOptionPane.showMessageDialog(null, "Impossible de résoudre la grille."); } } }); - // Bouton "Réinitialiser" - JButton reinitialiserButton = new JButton("Réinitialiser"); - reinitialiserButton.addActionListener(new ActionListener() { + // Gestion du bouton "Manuel" + manuelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - Reinitialiser reinitialiser = new Reinitialiser(grille, saisieGrille); - reinitialiser.actionPerformed(e); + choixFrame.dispose(); // Fermer la fenêtre de choix + + int[][] grille = GenerateurSudoku.genererGrille(); // Obtenir la grille par défaut + System.out.println("Grille Sudoku générée avec succès."); + + // Créer et afficher la fenêtre principale pour la saisie manuelle + afficherFenetre(grille, false); } }); + } - // Ajout des boutons au panneau - boutonsPanel.add(resoudreButton); - boutonsPanel.add(reinitialiserButton); + // Fonction pour créer et afficher la fenêtre principale avec la grille spécifiée + private static void afficherFenetre(int[][] grille, boolean modeAutomatique) { + JFrame frame = new JFrame("Sudoku"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + SaisieGrille saisieGrille = new SaisieGrille(grille); // Utilisation de la classe SaisieGrille pour permettre la saisie des valeurs - // Ajout des composants au frame - frame.add(saisieGrille, BorderLayout.CENTER); - frame.add(boutonsPanel, BorderLayout.SOUTH); + if (!modeAutomatique) { // Ajouter le bouton "Réinitialiser" seulement en mode manuel + JButton reinitialiserButton = new JButton("Réinitialiser"); + reinitialiserButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Reinitialiser reinitialiser = new Reinitialiser(grille, saisieGrille); + reinitialiser.actionPerformed(e); + } + }); + + frame.add(reinitialiserButton, BorderLayout.SOUTH); // Ajouter le bouton "Réinitialiser" + } + + frame.add(saisieGrille, BorderLayout.CENTER); // Ajouter la grille à la fenêtre frame.pack(); frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran diff --git a/OuvertureFichier.class b/OuvertureFichier.class new file mode 100644 index 0000000000000000000000000000000000000000..b55b9a2300db3770f0ab4c4d510c86bcc43ac5e3 GIT binary patch literal 1311 zcmZuwTW=dh7(HX}?%116?Ihh0Q&L(k#cnQ!v^C(AUJ{z(Hns(ckfMr*jXg=WxVE)f z2gCysQvX37D};oEA|xc>C5@<*sz^k%FZ>?*fH|{n8dG7(-^_e-zVltq&Xa$B+XrwS z6&oXXP2zQlHzeM)Vc?97INs7GYa@rVHYPBscT?I-+sNZ>efy5YjE!SBCvo0J8W$uA z67LFF7yYImUJ{6BbDs(r^R2oPNGdAfGHhZ!exmo4z6O(!8|^6 za19F**ByL>l7kyM(?~?s@S5xS<&B{Ag>KftO)MT>vBOgJ+Ltxe4*gcsL0LzoUo4)k zBckf+ZB+{eoc=QZgIEd!zqu|j^x_z)K;LM4t<7p(5&?VHq6i$%=6b`As_s$EQpkpC zu7?|ukksPXQ9WfZa^LZr0%o>U%JJH&ZFs>|7HMQlxp@J(#27N%6Dt0Ki2>gInNFsY ze;^iHe1Q1M0~jleHSfbJi%Ps;PVPdk6paIvT{E5h9t-h;RK|{=QbRMzhdW4=xgDDLg