From 7270ba1a20af37dd6b6363167ba58dc06ec60ab9 Mon Sep 17 00:00:00 2001 From: Aissi Jude Christ Date: Wed, 8 Oct 2025 14:57:57 +0200 Subject: [PATCH] =?UTF-8?q?Exo=203=20appliqu=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PenduJudeChrist/Display.class | Bin 1961 -> 0 bytes PenduJudeChrist/GameLogic.class | Bin 661 -> 0 bytes PenduJudeChrist/HangedGame.class | Bin 2024 -> 0 bytes PenduJudeChrist/HangedGameGUI$1.class | Bin 529 -> 0 bytes PenduJudeChrist/HangedGameGUI$2.class | Bin 560 -> 0 bytes PenduJudeChrist/HangedGameGUI$3.class | Bin 560 -> 0 bytes PenduJudeChrist/HangedGameGUI$4.class | Bin 424 -> 0 bytes PenduJudeChrist/HangedGameGUI.class | Bin 6698 -> 0 bytes PenduJudeChrist/HangedGameGUI.java | 1 + PenduJudeChrist/InputHandler.class | Bin 1141 -> 0 bytes PenduJudeChrist/WordSelector.class | Bin 2316 -> 0 bytes PenduWIlfried/ChooseWord.class | Bin 1168 -> 0 bytes PenduWIlfried/ChooseWord.java | 37 ++++++- PenduWIlfried/GameState.class | Bin 1788 -> 0 bytes PenduWIlfried/GameState.java | 61 +++++++++-- PenduWIlfried/HangmanPanel.class | Bin 910 -> 0 bytes PenduWIlfried/HangmanPanel.java | 7 +- PenduWIlfried/main$1.class | Bin 460 -> 0 bytes PenduWIlfried/main.class | Bin 3309 -> 0 bytes PenduWIlfried/main.java | 146 ++++++++++++++++++++++---- 20 files changed, 216 insertions(+), 36 deletions(-) delete mode 100644 PenduJudeChrist/Display.class delete mode 100644 PenduJudeChrist/GameLogic.class delete mode 100644 PenduJudeChrist/HangedGame.class delete mode 100644 PenduJudeChrist/HangedGameGUI$1.class delete mode 100644 PenduJudeChrist/HangedGameGUI$2.class delete mode 100644 PenduJudeChrist/HangedGameGUI$3.class delete mode 100644 PenduJudeChrist/HangedGameGUI$4.class delete mode 100644 PenduJudeChrist/HangedGameGUI.class delete mode 100644 PenduJudeChrist/InputHandler.class delete mode 100644 PenduJudeChrist/WordSelector.class delete mode 100644 PenduWIlfried/ChooseWord.class delete mode 100644 PenduWIlfried/GameState.class delete mode 100644 PenduWIlfried/HangmanPanel.class delete mode 100644 PenduWIlfried/main$1.class delete mode 100644 PenduWIlfried/main.class diff --git a/PenduJudeChrist/Display.class b/PenduJudeChrist/Display.class deleted file mode 100644 index 36d72c9ea7ffa55ed9758f223b26f49a06aa77d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1961 zcmX^0Z`VEs1_pD60xkw|26avb4F*jP1}!cIZ3Z1K23-a{5TVb-V8CF=&0xe}ECf=_ z!C(PWV9CK?#lc`L#K6d43*y^xFxYc2I0!K?F*tEBI14c_GdKw`urRo>Gq|%ecrY@s z*<|Krme?^eFl%UrF*2|?=clAHGVuFk=B4_T<|d^Ug(N2Bq%tya6ldg@hvyfiFfyoU z_+%xPCFlsEGaEY zWn{1>XoL;KM6eys8Hq)S$t9^p)^=c%IYDmm$t+7PW@KR1@bm=P#tjm4%}a4l%uQuv z5XWLZL>*UferZv1s#_+=Q#>x2#RWNum3kom@GwX)NU}3{@-TQYcr!Av`sSA?Sg|ws z@G$r?_^~ti^DqQ31oAKhF$A+SgzzwgGK8@+g!3>&Fhnvk2sq{EmlT&2B^LOmmSp6o z6!Wt&L~$@g^Dx9P#4<84#VhbI#4$)RGO&kbrWPw$DKIjyKbpDp{f<5b4u*J;ssxY% zKSl;lg#gzemrw;o1x5yGg|Ph6Vud{Q#In>Xg@T;YVuh4cg))!{iX04yAZ9 zp3Wiuo9N`gy@QWJBn85xAZW}pf)GO!ka6frW0VhM3jydc>ONh*vCY&ofU z=_MK9B&B(wD zb|NelGBR)^=jW9qX66;6xepQs)|ydV3~3DMj0{YS3XBZmxry1S&iQ%Ci6!BgB^l27 zdBr7(c_m=IC^ka;Va>?E4)%La9wP&r2BSWsCKn@v7$`X+xel&YK*1+fAveE7A+;ni zv&2e)k&!_STaaPXD+tqjcqLr3kODX*6{Uh5nOY1sQB=bdIcT7kvomCX5=0Iog9T8SC*fh3eCO{U%MqHm*f{!vNM1@Rp#=iiDyTD%e1@Viq_Q9ti}GkB^|1It5`r4xoS2gnoLQ1;&CZa| z$e@bhKWuJeWRSzJjzN(@j6s|M1XvgtLB#?CBZCwJ1A{CBBLgD?0|Tqpb_T|c3=9m6 z4AKk?3~XRQHU>@x83tJfCa}`!3``6x3=9mOn;4jcn71*oFx$##ZDU|v#9*u?vyFkx zPFr>d1N%+}4km_~3__b2m}GY`a56A#V_;d%zzx#FwT*$Lg^6+b|I?con6@!+gREl$ zTc-w6$iT(G!NAQR!~iO`co|d~_!vwW1Q~1?xEY)nL>N36L>c557#IW?SpG0@G5%rD zWcT?L7stufr&wZfs;XzK?&-wGzMk{W(EcZZIH!05XVX_Vh{vzd13DOu!(_5 zN_rOqAIO#b29P22KWL z1{J8CO$l|poS%})$iVNDnV0HUnwykb6q1;flgh}zn^_#5UzFlrnp#|(n!?DSqT!R3 zSeB@tlbDyTA6!zDnU`)25h*Rn%+U`{EwR>&Vr1YAE=f$z_Dw8+8p9c!nVy$eQd*SC z$Y4#-2pforU^|>M5{nX(OHzxh?Z75;1?QI*C8xS&f?UVvo|v2Jlb@cMtOs%x4+94S zCp&{I4}%*am>3vAzGYx!;9_84 zkY!+GU}RumVAa~rz_^itfq{{Mn}LCW4J^pXz{$YFz{|h{RvOE|%)rdRz@W-(E2FiI zfoTzgjJB4{HU{P$3@ketSeY1RF|abPX<=eq{{Ion8U_XiCa_Ur46F8vgF|ac5gLMcnFfs^&SwaAwxRP%G diff --git a/PenduJudeChrist/HangedGame.class b/PenduJudeChrist/HangedGame.class deleted file mode 100644 index 1ff803a5e35020b5016b7675031916b72f769e8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2024 zcmX^0Z`VEs1_pD6S}q0&22FMbElvh)1|2R2CI($D20aFSb_N431~!n4AxOrEgTa`K z!Gyt-i@}V+oQuJN!4gDRaWPmk*l;n}GT3o5s4>`cF{m;)fCxt+1_lOK4hA=nDtC~v z9_$RBj0~K_uj0`N!`6;Q44E#Qsd8vM-xk;%-A&E&jsf-LPxrv#1j0|EL(LPy;Wr_MZiFxVz z!6ikRdFj?5jl97niOJc%i3MQw>TQv8MqK;@-T!jgfcS7I%THjm8IsDDx@Ul6)WVVDrBXWDx{Pu6r|>*l(I8~@i2rl zM6feN@-Rd(M6)x*@G!(O#PKl1GbFGxB=RsMF(k7yr0_7LGNkb^q%&lISeZNwSq#~X z3<6I1`6b0AMTrHzsU;ctDaHJ33^^POxjYPc4Ec-<{7(6Kd8rCHsU;;vsS1h;JPZX4 zg**&JAYTfAeF+XY|D>$cYGm{w^cr%MZE^seREiO(?VPsIjq6gwKSh!egMlmw5yJQv@BLgQ$hfii%YB3`NtA?j1$Voilkn~8*OUX$sVr1Yr6B!;zeySCW{SSIo#D4Rs^j_TbdQ($u`<@%D;yu`c`1xAIk%+z89MMehk+{Elu=ls0n#FFsLk_=d}QVepZ zC$dN2?%@W7t7{%O<1;ddBRdJI1`^h+$vOGOsq74;pzKu1$e;pFMqsCB=9T4Vr$UPy zh~;jHpd?$#&QQ(Bz~+;mpIutO$iU+XDnFca5{rvLu{Z3GB7g8GcYj7GB7eQGB7Z(YHep=+z8g7 zz`(%31{P#z;ABu_P=Y9BA(&khDw-`xysk=q&A{RDW- zST-?m3UO^?;1*?>#}KZgyMuve7K1;C<`rcT;Mu{zr>(n#f!~Z(SCn-JgTPJ(K_-T9 z9S~b+8-wsH21!vCmK3llqAa@@L>L&hF>o(u;0Bp03S$0Wr2{cXOnV!HILNt73?S!v zF@S139tLg(UIu;!J_d0Hegmj4XO46N)7D(nnQ>eAl|poS%{k(w3Q*>Q|bZlv)&$n3R*s z$iP>Sn3-4NoS$2epO>0f!pI<|;ggkEmZ+atUZU?_lvt3FnOtlQGJ-2OzqBYh)h!dG zO$fz$J&+DY27cGP4ju+h z200!EUIsoM26+ZPMh1Qq(^L!@8F)PN@=}YOa}tY-Q;QiHgg_Ql=ogn~=B4X<1tjLB z<}fnwqUd5|-~|OhW@1ie6(~p;8JIOd&gM=jN-PJd%uUQ=P+(wXU}IolU=$DlIfQ|M zfr){Efs=uYfsuimfq_AZfe9?arKP=Pq|~C2#H1XM zNMdqHW`15kYEfE#QEqAqBZIt#PgY`CqJCm|iGFHXYF>%HBUp(mh;0orj4L?5v?w{% zEfZvb5Q;Tn*Y{7#N=+_dWRL|5 zp}W*4v$!NRFSUq~ffvP0Mh2nc)RNKyuunV^^HOqBi;5W;m^DD2;wdP~Pfjf^b}vmW zE@n_*U}0coU}RupU=$Dlxs-u{fr){Efs=uYfsuimfq_AZfe9?arKP=dKCsnuzC)yEewp?7?=^NxxnJR4D1Yj3@i-%V4DOO c1Q{3@SQvyDgc(G@B0>z33=Ck~Ss1_o09@L4O#lD@ diff --git a/PenduJudeChrist/HangedGameGUI$3.class b/PenduJudeChrist/HangedGameGUI$3.class deleted file mode 100644 index 845145119b94c531b2333cdbd4bc9c6b2574f841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmX^0Z`VEs1_pBm1x^MQ22m~sRt7OH1|bGPq|~C2#H1XM zNMdqHW`15kYEfE#QEqAqBZIt#PgY`CqJCm|iGFHXYF>%HBUp(mh;0orj4L?5v?w{% zEfZvb5Q;Tn*Y{7#N=+_dWRL|5 zp}W*4v$!NRFSUq~ffvP0Mh2nc)RNKyuunV^^HOqBi;5W;m^DD2;wdP~Pfjf^b}vmW zE@n_*U}0coU}RupU=$Dlxs-u{fr){Efs=uYfsuimfq_AZfe9?arKP=&cXl&0Au5KW&i*H diff --git a/PenduJudeChrist/HangedGameGUI$4.class b/PenduJudeChrist/HangedGameGUI$4.class deleted file mode 100644 index 29378a491da6f184643b43463ec82d483f2155e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmX^0Z`VEs1_pBmNiGIf20?ZPAua|c5G~BkAj-}l#>l{ClbM%UV#mn9tf3jk$iU*9 zpOVVR!0(fpm+DuVo0M77F;b9PGkYHrs@JlT&@yIVO;bCBB;9z9nMbXR1 zz>mULF=1rj@yyFhEppCDEG|whW@Hcm8Lyv{n3t~apOlrFT*Am8gb)fU&C7$hlO;DX zGmnu$Oe5L{Ast*&l$n=qtr^Ckz`(-5%D~9L#=yY9#J~V@3$3j-Jc07Sk~ssI20 diff --git a/PenduJudeChrist/HangedGameGUI.class b/PenduJudeChrist/HangedGameGUI.class deleted file mode 100644 index e2b213d8b03a88a9863cb0b4b0f5544f5fa3c3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6698 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%0Ah70 zAf*{dYzu?>Hii_fZ49X(KSGj>AA>Lh1H)_vK886A;tcZ`v>4_y7&9zjFkx8CV8yVM z!HZ!TLomZ~h7g8T3`q=Y7z!BHGE_0FW9Vhrz%Y$rGs7%~Eexv|wlZvF*v_z(VFx%S z_!(ILFleze%;)^WAkS#Q!N3ISeM16{A(Vj$91CEl&t>4&V&2A(wwyr>t1$H2|Nz;Kv>gW(8+ z0K+i`5r*RoDhwwW>=@27_%U2yNMyLdkjHSBp@`ugLm9&Zuy;5ZnC+DQFo-ZRFo6aL zpk8W+hMG65g5AQvwv(ZZkpWu0Zeg%ufqIl>8$%|J=vNjhN2CLgGa>0*i-C)Qf#ER& zJHrzO0fwgxVhqn2kgklJS(y9=ev5c{jv7AAY;Wz^WgBk-H!wCjPhLa$Ykp)chfJr_uDGVk>0M8c3 AiU0rr diff --git a/PenduJudeChrist/HangedGameGUI.java b/PenduJudeChrist/HangedGameGUI.java index 5016a6c..d462317 100644 --- a/PenduJudeChrist/HangedGameGUI.java +++ b/PenduJudeChrist/HangedGameGUI.java @@ -12,6 +12,7 @@ public class HangedGameGUI { private Set guessedLetters; private int lives; + // Composants de l'interface private JFrame frame; private JLabel wordLabel; diff --git a/PenduJudeChrist/InputHandler.class b/PenduJudeChrist/InputHandler.class deleted file mode 100644 index 220fab2d52596261c46f70349a9154795334f60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmX^0Z`VEs1_pBmUoHkg1_e$AMFu4f24yY=6$Vu<1}O$LE(S>kbr7KeA~ZpS78ipy zgANCSE=ZLgh@;QVAkARF!C=VFV8qT~%*eoIlbM%UV#mn9tf3jk$iU*9pOVVR!0(fp zm+DuVo0M7n zBZIJOUP)1El|pG=szOd`Nl8(vl>$416%T_ogAEUZErT5ogFT3F01=K1PCN|G3@+>p zt~?BG4DO5!%3-OcnK?PBRSKyfbBe&`6sMNvz)Vw6RN!Io0GZ{<;Kjq>&EUhxpb?f| zTC9**mRhBda(HFd;ROn*#l?x0hgT{jgTfQ)4h2O8Mg|^a_cJmGfPA12_O^dgR%&ty zicoM#QD$B`BZDAV6>?lKGVmgarJ`x8EG|jSWn^H^FD+qY5QPM7X1;zvQD$CAa7j^W zVy-nKgD}_tRAEL2)&h_sMg~!6oPnJNafdZ1^>E~+R+NB}4kLqzh9<;lWHpQo+$H%w z`Q@oa&WXjTj0`L#MVYyb3~V{6dFdq?;56vT$iSAIkyzwd!pOj);R#Ac5VwHMfyX{0 z14m{tEIqPlIBP~RGO&YPmy^fHz+RS^Q=00Z#>gO{;f(AKxPEI!29D(XypqJsyka!} zK!Vy@Gm1fxL4ZM!0R)&B7(oe%fssLkfq_Amfsuicfq{WlYdZtuMg|53Mg~y^1_m~; zAUgvmgBXK20~1*38U`i?76t}}z)cKHLd@G3ShTh=ux?{u+s44|r@M`TgJl5&pDyz@ z2F@J}T(cPXK&rU6G4L$^e+evVt1YvGfp;eZ9}~k&h%7%?c8km!1_lNuu(etYTnr2h zJPaHRybQt&{0wRg0t|W#f((WXq73E?Vhk<};tW0v5)A$fvJ4Uo3=EPCEDV1cR2kSA dB)R@G$TBdqGf1&BNP|2i12z=oJvlH-9snqy56J)k diff --git a/PenduJudeChrist/WordSelector.class b/PenduJudeChrist/WordSelector.class deleted file mode 100644 index 1ed54560885ac4314a42b810488a788142c5c11b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2316 zcmX^0Z`VEs1_pD6w_FSb3^nWwwOkBL3^kk#`3!X+Ry{jI0|!GR2SXDFLo)|M3kO3h z2SXbNLpujU2M0qZ2SXPJLpKLQ4+ldp2SXnRLq7+@1P+FY91N2<7$$QtOyOXd%E2&= zgJC)c!we3FnH&tWI2dMgFwEg#n9IR1kAq=82g3pmhJ_pqi#Qk-b1*F7U|7n*u#AIY zIS0cE4u+K+468U8R&y|{;b2(H!LW{lVLb=K1`dXe91NQ{7&db-Y~f(o%E7RWgJC-d z!wwFHog56iI2d+wFzn%A*vrANkAq=92g3mlhJzdohd3Axb1)p?U^vRbaEycDI0wTC z4u+E)45v64PIEAv;b1t+!Ela);XDV!1rCOb91NE@7%p=#T;X82%E54rgW);{!wn9G zn;Z=+rCH8jH*8Cab2 zQ&Jfj_bHnqCQWzOTG&Hf9$6=G412vH= zIKQ+gIn^x_q+bxED>yYLHMu0eNDt%?9)@Cu5=I6A5L>^rBr``JVmuE+Awv-l!)t~& zFi9jAGcvG%)H5=$6;zgF#1rxzvW<|dY8g7{qdMJbtii6yC}MT`vW$vKH- znW;sL3~a^urA3*=j0~))$wi5Ij0_x^c_pbud8s9g3>-Q6>6yuysX2@cT!}g9`9+x} z8M]~afHnZ+P8*|HKrhB7j+=46%?r7|+GmOw&eZLDcIVArxH7A1kSvgKzM zgSD_EXC#&|GO#9RWTxgZGO!oqXBI;oRGgoanwi7Mz>-s%2eKr!Bp)2iED&$7=9MO< zgPoOAnwiSTz*3f)2QnxxH4`jcl3E0^h#71Pb6RRCBLj0{CMcLdE&@rh7DIf*t=Nr@$3!`X97i!%$s zdXh5|^T4iWO-alH1sX>|YGxk98204+QfMHgV=H_l6*!6mbA>ATt)_t zjLhPa{7jJ5tjYO#Ag8eurIvyGn3<9a3W|c%ykZc8IXAxqluj~=5Il!;if@!+_B{5gVSYVULMHVY{k$-$5~JWN}^y}m{UPcXHP6G$=a1Ep&Aw8UI! zyd>skGBU8H6{UiF#9EvWPEl+HiACU;XG_gXO9Ur@)Z~0nJhCO{Bo>3iB{{#e2;`9* zkh>Wf*iur>A->>90S+Pl;79>ZA%WmX0WKlI;79>(A)(+%0UjaY;79>pA(7xn z0X`wo;79>}A+g{{0RbWL;79>MA&KBf0U;sD;79>sA*tX<0TChT;79>cA(`Mv0Wl%j z;79>+A-Uj40SO`b;79>UA%);b0VyHH;79>!A*J9*0U06X;79>kA(h}r0XZSn;79>^ zA+_L00RQA&uZj0VN^L;79>wA+6v@0Tm(b;79>gA)Vkz0W~4r;79>=A-&*8 z0SzJj;79>YA%oyZ0WBfJ;79>&A*0|(0UaUZ;79>oA(P-p0X-qp;79>|A+z8}0RtiP z;79>OA&cNh0V5&H;79>uA*0TUtX;79>eA)DYx0W%@n;79>;A-mv60Sh7f;79>W zA&1~d0V^TL;79>$A*bL-0UIIb;79>mA(!At0Xrer;79>`A-CX20S6)X;79>SA&=ll z0Vg5P;79>yuzD9Eui!`lS0V44NC6Kazu-s#Pa*%{NC7XQfZ#|0 zZ=t~8NC6+Apx{UWU!maONC7{gkl;uGf1%LeNPzΜ566K%wy9NP!@sh~P+pV4=w1 zNP!TcsNhI}P@(AHNP#e+nBYi(aG}`XNP!5UxZp^ENTK-PNP#G!gy2YlXraX5NP!rk zq~J(_SfS+LNP#$^l;B8#c%jtbNPz^QwBSgAM4|NHNP#4wjNnLtWTDL9NP!fgtl&t2 pRH5wPNP#q=oZv`-bfMhfNP!HYyx`3YEa<75gMpEu3X~!lssX5{GLQfO diff --git a/PenduWIlfried/ChooseWord.class b/PenduWIlfried/ChooseWord.class deleted file mode 100644 index 8b18fdc09cc7011518590cf0dbec4fcc2eeb6743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmX^0Z`VEs1_pD65H1E826c7@4K4;I5Ut71pvA$U&BegVpu@$$!k`Nx^tc$L81zAe z0f;c8@;0!bLNGnjBO@H3dQGnjEP2r`(1WDGbMEZ7+=xfnzl)IoeJ5X&0GvSDYi zWoNKsXRv2vV6(~0%Pg^DWMJ0N3}a+qan4UkWn|#@$;?ajE6q(xEec6Y%1LEp;7!iR z&o535$w&>)FG^u#5Yf=|$x19s)Xz!GOVe4}&a&93z7;h^=2*l9{9LSX7i)>62Mp!pI;77R}7p zcPdRwOD#%G2}(^&NiAYz5Q0g74222u<>r?ZyCo)P=A`PCRFr^Bb_5YlJPghZN<0iM zAi|ZwjfcS<#PVS9wEgURwSnulw{`T@i6#; zbg`$TrX`lQF*0x=0s=+e zKPf9UxrC8{4`C=IFhn&l!y6Q1!cg(de0@krSc614ic%9(K#|DEz*16_najw)o>}ag zTToI7j_D{y2JVu4pZxOFBIm^7R7M8o#FP|91{6CWF0s~(Vq{=V&dCR<;!R9R2`()t zC`v6ZPEBECkbv3^_8C0vzz*OqD9X$$0jGwLqQvA>Mh2GR%qoyg8k(Mr4D5NS6(yc| zC5#L#8lE5l=JeDOkOMrClNHnn42lfW3^EKLz{J1^N-+$K4Dt*N46+Q242%p646It) z85lP*FfcGOC@?TEuz>|x7&sXe8I&MO8KoIm8CVz?7+Q8SFhy=>VD{e4z!JHefi+Ty zZ94<|b_Na~?QIO4k-oFKkH8hMkjU#K^ATXMg~;|1_mYuH2{|y{lNeL diff --git a/PenduWIlfried/ChooseWord.java b/PenduWIlfried/ChooseWord.java index 2613a2c..d4bca1c 100644 --- a/PenduWIlfried/ChooseWord.java +++ b/PenduWIlfried/ChooseWord.java @@ -3,15 +3,20 @@ import java.util.*; public class ChooseWord { - /*Fonction pour choisir le mot aléatoirement*/ - public static String chooseTheWord() { + /*Fonction pour choisir le mot selon la difficulté*/ + public static String chooseTheWord(String difficulty) { + String filename = getFilenameByDifficulty(difficulty); List words = new ArrayList<>(); - try (BufferedReader reader = new BufferedReader(new FileReader("motsFacile.txt"))) { + try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { String line; while ((line = reader.readLine()) != null) { if (!line.trim().isEmpty()) { - words.add(line.trim().toLowerCase()); + String word = line.trim().toLowerCase(); + // Filtre selon la difficulté + if (isValidForDifficulty(word, difficulty)) { + words.add(word); + } } } } catch (IOException e) { @@ -25,4 +30,26 @@ public class ChooseWord { Random rand = new Random(); return words.get(rand.nextInt(words.size())); } -} + + private static String getFilenameByDifficulty(String difficulty) { + switch (difficulty.toLowerCase()) { + case "facile": return "motsFacile.txt"; + case "moyen": return "motsMoyen.txt"; + case "difficile": return "motsDifficiles.txt"; + default: return "motsFacile.txt"; + } + } + + private static boolean isValidForDifficulty(String word, String difficulty) { + switch (difficulty.toLowerCase()) { + case "facile": + return word.length() < 8 && !word.contains(" "); + case "moyen": + return word.length() >= 8 && !word.contains(" "); + case "difficile": + return word.contains(" "); // Phrases avec espaces + default: + return true; + } + } +} \ No newline at end of file diff --git a/PenduWIlfried/GameState.class b/PenduWIlfried/GameState.class deleted file mode 100644 index 174aa2af281435594da45b80061d4405d7feda7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 zcmX^0Z`VEs1_pD6BrXO~26HY33kFM01_1^u5X&0Gvf*N|Ww2vsu;*f6XD|neIDiO8 zE(RwCXAt4S&EU%522$@1VtKGLc(OBiaWM#jj1y$=2C;nD8GIQTSjzK@QWzP8e6kYD z67_Qu^V0Q$ONuh{(ybX8xH2+RQd0B6!77-dof#R}Qj3c6i;5W;7(E#ocuI;gQ&W6W zOG;8fLi`XTN=q_x^n+7NtQi?NgEQ0f5=%;pQW+W4P-Sf(T(Eu48Hq)S$t9^p)^;FE zeH|m>U4w%BgMt|uc%Ad}ic1pnO2QIzN>iB`7#KJi8Q5$x^D;~97#T!0kW7KPS~HB1 zfyFsLC6$qZ-zPIK)vq)+DYYmhF)1gNk%6m=0xRU{6mifrKqraDHh~a;jS<$dP>RiMgr4C5a`edZ0MrVNho9V`uQ^ zVF+L_=3x+H5a(eCWH97mkYJExX9(h92xbUjWDo=?)dz>YM`CeCaB2w;gA9W#4}%ng zG&@5mNOKquLpVbOJ3}N7Lli?a4?_$?EDu8*Lo_1;C)`Fx263=K;CO+As8eZXPD*MK z4?{dd0uMtXgE1q6078v_QdVkm2{>57P$VFl85y`s@_q8lQ;VDvi&GgH*m6?y(n~U6 zD#7k`EGkN@EM{b2Nz2U1VPs&_h;|0Yj4;9$cnX0;hchDsdl@J}_@^;4NN6}Chb~;H zH6sHr*aWa8!KoleCZ?pIr5cF)tu><<8Q79D5{n#5KvsBaIx{kGBLp z1JhOpW-YBP49wdYSoW}PWnk6X!oVsJzk`8IYc~UX%hR$c~11}z3{s9W_Jn81M}jOJE;CWbX| z&vSv5s57vFy{N;W3)P&+z{J4Hz`&pia=MT9K9JvJ7BPrx%bJ+6h_VR8FJNG0UIX^d zD;AJ(5FdzvHR&>lfZeRmAj_c3pv+(db}1hN^FIbIb_P90Mxh@JtPG3{`f%%v7?>Cs z85kJ&wYD&D32-iCU}ss*z`~3$m<=p#4mOCDfr;0Fk%5uHfWZ*zTu_n$=?BF(7f2T* zY9YF87#JCh7>uDx>lm0BKt-nYZU(`~?F>Rb%(gNhPwrd9pr#FC$e3(n5Dtfkv7{_w z;L;XQ0Ex6PF)sgqU3(jY$Odp?M5G-@1`Y-%24Mzg1~~>722BQ61_K5s1~Uc^uyc7C inE!(OEy$?)3+!zZxLc5&%?vUX+1b7fj0~n=o6G>BLRQfL diff --git a/PenduWIlfried/GameState.java b/PenduWIlfried/GameState.java index 070eaeb..be35125 100644 --- a/PenduWIlfried/GameState.java +++ b/PenduWIlfried/GameState.java @@ -7,13 +7,19 @@ public class GameState { private int errors; private Set triedLetters; private static final int MAX_ERRORS = 9; + private long startTime; + private int score; + private String difficulty; - public GameState(String wordToGuess) { + public GameState(String wordToGuess, String difficulty) { this.word = wordToGuess.toLowerCase(); + this.difficulty = difficulty; this.hiddenWord = new char[word.length()]; Arrays.fill(hiddenWord, '_'); this.triedLetters = new HashSet<>(); this.errors = 0; + this.score = 0; + this.startTime = System.currentTimeMillis(); } /*Fonction pour essayer une lettre*/ @@ -32,15 +38,58 @@ public class GameState { if (!found) { errors++; } + + // Mettre à jour le score après chaque tentative + updateScore(); } - /*Fonction pour vérifier si une lettre à déjà été essayé*/ + /*Calculer le score*/ + private void updateScore() { + long currentTime = System.currentTimeMillis(); + long timeElapsed = (currentTime - startTime) / 1000; // en secondes + + int baseScore = 1000; + int timeBonus = Math.max(0, 300 - (int)timeElapsed) * 2; // Bonus temps + int errorPenalty = errors * 50; // Pénalité erreurs + int difficultyMultiplier = getDifficultyMultiplier(); + + score = Math.max(0, (baseScore + timeBonus - errorPenalty) * difficultyMultiplier); + } + + private int getDifficultyMultiplier() { + switch (difficulty.toLowerCase()) { + case "facile": return 1; + case "moyen": return 2; + case "difficile": return 3; + default: return 1; + } + } + + /*Fonction pour obtenir le score final*/ + public int getFinalScore() { + if (isWon()) { + updateScore(); // Dernier calcul + return score; + } + return 0; // Score 0 si perdu + } + + /*Fonction pour obtenir le temps écoulé*/ + public long getTimeElapsed() { + return (System.currentTimeMillis() - startTime) / 1000; + } + + /*Fonction pour obtenir la difficulté*/ + public String getDifficulty() { + return difficulty; + } + + // Les autres méthodes restent inchangées... public boolean hasTriedLetter(char letter) { letter = Character.toLowerCase(letter); return triedLetters.contains(letter); } - /*Fonction pour vérifier si on a gagné*/ public boolean isWon() { for (char c : hiddenWord) { if (c == '_') { @@ -50,17 +99,14 @@ public class GameState { return true; } - /*Fonction pour vérifier si on a perdu*/ public boolean isLost() { return errors >= MAX_ERRORS; } - /*Fonction pour voir le nombre d'erreur*/ public int getErrors() { return errors; } - /*Fonction pour voir le mot caché*/ public String getHiddenWord() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < hiddenWord.length; i++) { @@ -72,8 +118,7 @@ public class GameState { return sb.toString(); } - /*Fonction pour voir le mot*/ public String getWord() { return word; } -} +} \ No newline at end of file diff --git a/PenduWIlfried/HangmanPanel.class b/PenduWIlfried/HangmanPanel.class deleted file mode 100644 index 5724735fdab67e7f6c018237da3b5a3d6aa48e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmX^0Z`VEs1_pBmEiMKw1_@3EP6kOX22KVk5LcRuL54vVM96V4$b)DFb_PXu1|>!Y zw$!4c{Gwt;21ZXt1~!|_yv!0iMh0dL%`ip=7U%qwR7M7VpUk{eztY^K)S{5Yq?}Yn z2F~Kt5?81`77b63TE2qB%)Aok{M>^4ywtoBMg}nrpRB~PME%6_5`Fig#Da{>!~&>cT*3LJMaijdnIMw|JreWMa})Cd67y1X^gssiFz_<)@i1^R@bEAw zgIK~0BJ2z*JPfJ~YCH_;3~G!Fj1fEx8Vs6@3_QrX85x8?`YZH{%QN%R^}WDGGBU6i zrGlNx$RG%kMsXh_14l|xVmZjaj124=o}Qjyzkvn)%Mx=K8Mr|5!6ikRdFhM{;!rQ< zB<7{-LjrpK?WhH9xVnYund=$^i~EYt!)g<2t9lZ%wV0Y z4BQNy3_J`h48jZ|5PghU46Go1jO<$4+ZkB21&jn4bp#ns2r}wyV_?-5s1;g*f5AQ1TaW2q%%k|)H6siOlOd0SkEBCaGXJw;U0q=!zTuLMm7co22lnE d23`iv-wXj_;^N}sV#2} 7) g.drawString("X", 240, 100); if (errors > 8) g.drawString("X", 255, 100); } -} +} \ No newline at end of file diff --git a/PenduWIlfried/main$1.class b/PenduWIlfried/main$1.class deleted file mode 100644 index c4889fd3a2074492406bd93b558ddad4a71d7221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmX^0Z`VEs1_pBmX)Xp91|cp6egPq|~C2#H1XMNMdqHW`15kYEfE#QEqAqBZIt#PgY`CqJCm|iGFHX zYF>%HBUp(mh;0orj4L?5v?w{%EfZt_XKrF%c$ zeokUuy1su>R%&tyBZDkh2;E6OnZ+fkd8tK=3@jj{7#aAJi&7IyQa$rZQj5|OlT#TP z1TzxzQgTv#QcFrwi#+oRN=q0N7?>GY7#JB?85kIt7#KhfVqj$8U|?X7Wng4rWME)m z)!NR$xRHT@fsug|tN^yINKLkvSNh}8!&v>(Ks03s%G zF-&5Z%)u}PWad;3hG`(_sUUsRIT&Vu=$Rm57RZUSL996(40Azh=7Bi#g%}tZ7IQEx zVP^wAGktr;13G7|IBa})Cd67xW+_X}!P zT9lTUoXW@`n30&5l9TF_T2hi)YDRHNzSnhP4dq7#T!CiuDuAOZ1)ci&9dHd=e}3OG|hd z)-!BCHwheEJPaE_)=Po3!R!bIMU!)WUU5lcUJ2Ntn|K&}7On=73zhnTKHu!&XKHR=@nBk_;Y(Z4BEP8F-+M1V=CrgCB!GBLkarDkwnF9RpUv z$RGx?0Ok%acqD^tSjWQIv$3j3@dpUj)92d3@6wbPVz9EVmQsnAOo|kI5RIjCsm;=F()$x zYO@{>!x@HEj0_As3}-=VMIkO!NX#ipO-!j&C@IQJP0{0FILC0Fhv5Rqri%>gco;4* zTxMjDan8?6FG?&a%}FfD%+D)UREW$kRWD0bD9_JRA*dRVRUi?t4a|utDU1x7 zNK(%Exdr)osd**VNIr&yCRm3SR<+PT1DTC5fRRBkF(t(@85GSvnZ+fkd8tK=3`$4_ zq?V=TmFT0Y0NcVmuBYc2NY%I zl?0a*r6%TDGcvHJr`IsFA5nM)S!`qoU)*CiY&y=a0it8?lUr|AhKF!URi#2Dzt`ynC_OCT#{c@$&)fRSMavK>%OkeuxSu6~MDAS#g)9wg5qi=b!>sVqoEmV_!tuJ~X{7m`N6 zo`D+SoS2gnoLQ1;&Cc+MkwF#1L)hHL$RLMb9fKl+JA(%U0|P4qC#bGtU|`?`)iGe& zkHH^I2QUPJ=^zGQ1_lNe21Zbw$-u}E%D})N%fQIM2-2^$oq=&90|NsiLl^@C0~=V7 zje(OPoFM|L)SQ8tfr){EL3jrPlh1Aj=1A@B3@n=&Sa&e6Av6jxurM$%2r#fP2r}?9 z2r~#Vh%j)1Dqx5qjB*TY49pA+47+wSuty4UY-ix~))Hh^5M+wj#=xb;wvB;XYc~T= zPHZcebNo-?~ z+|3{rxt&3JGlPuQCI%THS+I~?8_sW>94)V^CvgV9;Rb zVbEll!l1=4he4ZR5rZznN(KXlEevK1I~mLwI2ocCLZD&g&A@ROSu^ufVku#LeG ziEXrv!5HjflWh#9-dfujj93;h@M$q`V=&vnU_Oh1XA^^lki|9z%Z*?$n@tQ#LRQ-t ztT!>RN^fJZnF&!~3sL|PvfBg-Vo-Q*W3b%BAOp74ej9@WnBh2+K@?=76IfD-c^iZC za;U>xW-`caV$c99GuXx8%D{lEh8v{I4P*@i0|OH{eMK>dF)%RLFz_(gGDtJnGpI5+ zFjz1+GB_|eF*q`~GPpCiG59lhFhnwVG9)s1F(fhgGGsFNF_bd+Gc+;;GITKnF-&3z zW|+ee!myMflwlh~7{dXE2!<03Q4G=G1jzP>!GfJ3hT{)|0;8oeI|B startGame("facile", selectionFrame)); + mediumButton.addActionListener(e -> startGame("moyen", selectionFrame)); + hardButton.addActionListener(e -> startGame("difficile", selectionFrame)); + + selectionFrame.add(titleLabel); + selectionFrame.add(easyButton); + selectionFrame.add(mediumButton); + selectionFrame.add(hardButton); + + selectionFrame.setVisible(true); + } + + /*Fonction pour démarrer le jeu*/ + public static void startGame(String difficulty, JFrame selectionFrame) { + selectionFrame.dispose(); + String selectedWord = ChooseWord.chooseTheWord(difficulty); + gameState = new GameState(selectedWord, difficulty); createInterface(); + startTimer(); } /*Fonction pour créer l'interface*/ public static void createInterface() { - JFrame window = new JFrame("HangmanGame"); + JFrame window = new JFrame("HangmanGame - Difficulté: " + gameState.getDifficulty()); window.setSize(800, 600); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setLayout(new BorderLayout()); + // Panel d'information (score et temps) + JPanel infoPanel = new JPanel(new GridLayout(1, 3)); + + JLabel difficultyLabel = new JLabel("Difficulté: " + gameState.getDifficulty(), SwingConstants.CENTER); + difficultyLabel.setFont(new Font("Arial", Font.BOLD, 16)); + + scoreLabel = new JLabel("Score: 0", SwingConstants.CENTER); + scoreLabel.setFont(new Font("Arial", Font.BOLD, 16)); + + timeLabel = new JLabel("Temps: 0s", SwingConstants.CENTER); + timeLabel.setFont(new Font("Arial", Font.BOLD, 16)); + + infoPanel.add(difficultyLabel); + infoPanel.add(scoreLabel); + infoPanel.add(timeLabel); + wordLabel = new JLabel(gameState.getHiddenWord(), SwingConstants.CENTER); wordLabel.setFont(new Font("Arial", Font.BOLD, 40)); - window.add(wordLabel, BorderLayout.NORTH); - + hangmanPanel = new HangmanPanel(); - window.add(hangmanPanel, BorderLayout.CENTER); - + JPanel inputPanel = new JPanel(); inputField = new JTextField(2); - JButton submitButton = new JButton("Try Letter"); + inputField.setFont(new Font("Arial", Font.BOLD, 20)); + JButton submitButton = new JButton("Essayer la lettre"); - messageLabel = new JLabel("Enter a letter:"); + messageLabel = new JLabel("Entrez une lettre:"); inputPanel.add(messageLabel); inputPanel.add(inputField); inputPanel.add(submitButton); + window.add(infoPanel, BorderLayout.NORTH); + window.add(wordLabel, BorderLayout.CENTER); + window.add(hangmanPanel, BorderLayout.WEST); window.add(inputPanel, BorderLayout.SOUTH); - /*evenement du bouton*/ + /*événement du bouton*/ submitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleLetterInput(); } }); + /*événement de la touche Entrée*/ + inputField.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + handleLetterInput(); + } + }); + window.setVisible(true); + inputField.requestFocus(); } - /*Fonction pour mettre à jour le pendu*/ + /*Fonction pour démarrer le chronomètre*/ + public static void startTimer() { + timer = new Timer(1000, new ActionListener() { + public void actionPerformed(ActionEvent e) { + updateDisplay(); + } + }); + timer.start(); + } + + /*Fonction pour mettre à jour l'affichage*/ + public static void updateDisplay() { + timeLabel.setText("Temps: " + gameState.getTimeElapsed() + "s"); + scoreLabel.setText("Score: " + gameState.getFinalScore()); + } + + /*Fonction pour gérer la saisie de lettre*/ public static void handleLetterInput() { - - System.out.println(gameState.getWord()); - System.out.println(gameState.getWord().length()); - String input = inputField.getText().toLowerCase(); if (input.length() != 1 || !Character.isLetter(input.charAt(0))) { - messageLabel.setText("Enter a single valid letter."); + messageLabel.setText("Entrez une seule lettre valide."); return; } @@ -70,22 +142,52 @@ public class main { inputField.setText(""); if (gameState.hasTriedLetter(letter)) { - messageLabel.setText("Letter already tried."); + messageLabel.setText("Lettre déjà essayée."); return; } gameState.tryLetter(letter); wordLabel.setText(gameState.getHiddenWord()); hangmanPanel.setErrors(gameState.getErrors()); + updateDisplay(); if (gameState.isWon()) { - messageLabel.setText("Congratulations! You've won!"); + timer.stop(); + int finalScore = gameState.getFinalScore(); + messageLabel.setText("Félicitations ! Vous avez gagné ! Score: " + finalScore); inputField.setEditable(false); + showEndGameMessage(true, finalScore); } else if (gameState.isLost()) { - messageLabel.setText("You lost! Word was: " + gameState.getWord()); + timer.stop(); + messageLabel.setText("Perdu ! Le mot était: " + gameState.getWord()); inputField.setEditable(false); + showEndGameMessage(false, 0); } else { - messageLabel.setText("Keep guessing..."); + messageLabel.setText("Continuez... Erreurs: " + gameState.getErrors() + "/" + 9); } } -} + + /*Fonction pour afficher le message de fin de jeu*/ + public static void showEndGameMessage(boolean won, int score) { + String message = won ? + "FÉLICITATIONS !\nVous avez gagné !\nScore final: " + score + "\nTemps: " + gameState.getTimeElapsed() + "s" : + "DOMAGE !\nVous avez perdu.\nLe mot était: " + gameState.getWord() + "\nVoulez-vous réessayer ?"; + + int optionType = won ? JOptionPane.INFORMATION_MESSAGE : JOptionPane.QUESTION_MESSAGE; + + int choice = JOptionPane.showConfirmDialog(null, + message, + "Partie Terminée", + JOptionPane.DEFAULT_OPTION, + optionType); + + if (!won || choice == JOptionPane.OK_OPTION) { + // Retour au menu principal + SwingUtilities.invokeLater(() -> { + JFrame currentFrame = (JFrame) SwingUtilities.getWindowAncestor(inputField); + currentFrame.dispose(); + showDifficultySelection(); + }); + } + } +} \ No newline at end of file