From baab5c7ce2d11e9d2607a504aaf2d7b94eac2863 Mon Sep 17 00:00:00 2001 From: gentil Date: Wed, 8 Oct 2025 11:20:24 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20jeu=20mvp=20fonctionnel=20avec=20diffic?= =?UTF-8?q?ult=C3=A9s=20et=20compteur=20erreurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/GestionMotsPendu.class | Bin 0 -> 2265 bytes src/GestionMotsPendu.java | 51 +++++++++++++++++++++++++++++ src/TestPendu.class | Bin 0 -> 2851 bytes src/TestPendu.java | 65 +++++++++++++++++++++++++++++++++++++ 4 files changed, 116 insertions(+) create mode 100644 src/GestionMotsPendu.class create mode 100644 src/GestionMotsPendu.java create mode 100644 src/TestPendu.class create mode 100644 src/TestPendu.java diff --git a/src/GestionMotsPendu.class b/src/GestionMotsPendu.class new file mode 100644 index 0000000000000000000000000000000000000000..008f71951657226bcf986c183789fe56bdab814b GIT binary patch literal 2265 zcmX^0Z`VEs1_oP(RxSo624;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc20^f*(vr*^eUHTA4Bx~8E(Uf6W=;lf1|D_>ULFQM27X2c0r%A6 zlFa-(-~5u|fYiK{Qbq>BTo604$R#r^Ei<_^rzDk;f!_yVnr~u(H3x$rBLkb8qqC=v zD?5WQBZDwP-m$1CvC=2AxP*&Ah=G}#L5xA1ok4H>F8~FVUP(m>7lR6eCMa687#T#7eGyzzl$n=qtr^C}pv0g9QlZPpAPiNJ znXeBq*;+GfdQn-kcYvD!I+VOqbM~o#V0c_m61V21KHD1Gr1T{8O+!j%y}3r zK+2I)14IEM14~I!W-bSV6(a+qGDx)z4}&d(9U}u*aY$tapz(1VDMyQV9zXe%`GUY z1gFg?PuEct!@^#FUia(t?7b)Z*gQ6h;OKWEa78Sc5WR zA|rz=*bSNa`k(~mmtW$RUz(TVT9KSu0Lpmm49PGHGxPO5{oxWE45^F^+HRT28JVd? z3YmE&Mfs&=AeSguDd0$oNer5xWS_yqkO_)D;pF_hvecrIOr)#~3ITU^h8$QS0uGv> z#JrUJTrP%eP<9Ps$md}wU?^l{U@6Y5N(IN7CrGZChoOX_l#ziwFSVk?Gp~e^fknep z(-UN3IVgfEKv9U2NT4yn$iV09;p*$@7w_ij?BVGe#K<6o6xEPKYt6{O>ztogT#}eq z5|)@#n##z)8JwA(msnC-l*-894$%O1u5V(24TKAhBB*|d2v`9qsWZ-6CVqjokVvu5}WT;|bWT*!7)EI<7#V-RRLk*Z; z%fQ0G2rAndm>B997#JXY1_ocP?F@`syBXLcw=-~VW#H16gMpucn?Z?zhryJAm%)R9kHLq5 zpP_+)0qme81}0De3UL&p2?Hww3j+f~$8H9t$lVMokwR+Q88o&tX!{81`Dt%sFo^U$ z#^9l|jlslMN62y;gY`@XejS!=4EEa?oc)&nf1tCC!EM(6n;-}4?qu*{Vwm~=43y)? z#BhKiNM|QQ2opp2^8Z`4w=sk-XAt&<(42lcy4x6HboMW2;PctdkQ6DDvYjDq|3(I8 z20?}-hD?SihAf6WhC+rY1_p*oh8l(h1}3mStr++i7#M^Y1Q|paL>NRFWEsR5lo-Sr zv>7BA%o!vZycwhzk{DzeG8u#zDjDP%Y8Yf0Y8m7h+8GoW8W|WEoESL&F^I4;C^4`z znEq!_Vqjrs;AUq~VrMXAXE0@8_{pH<#?BD+A5^cxWTF@t*%_i(e=;ySu`?uaA%!I) zLlc7&10y(ss~MOXSQ!`?9JQpkF{Jx~fKXhh#B;_zVns(yJIiKnt8m7#Nrt7#O4(7#I{77#LKA1eP=K z3rR0$;1ZHu&cG@pfUs4HfsKKIL5D$xL6> motsParDifficulte = new HashMap<>(); + + public GestionMotsPendu() throws IOException { + motsParDifficulte.put("FACILE", new ArrayList<>()); + motsParDifficulte.put("MOYEN", new ArrayList<>()); + motsParDifficulte.put("DIFFICILE", new ArrayList<>()); + chargerMots(); + } + + private void chargerMots() throws IOException { + try (BufferedReader reader = new BufferedReader(new FileReader(CHEMIN_FICHIER))) { + String ligne; + String section = ""; + while ((ligne = reader.readLine()) != null) { + ligne = ligne.trim(); + if (ligne.startsWith("#")) { + section = ligne.substring(1).toUpperCase(); + } else if (!ligne.isEmpty() && motsParDifficulte.containsKey(section)) { + motsParDifficulte.get(section).add(ligne); + } + } + } catch (FileNotFoundException e) { + throw new IOException("Fichier introuvable : " + CHEMIN_FICHIER); + } + } + + public String getMotAleatoire(int difficulte) { + String cle = convertirDifficulte(difficulte); + List liste = motsParDifficulte.get(cle); + if (liste == null || liste.isEmpty()) return null; + + Random rand = new Random(); + return liste.get(rand.nextInt(liste.size())); + } + + private String convertirDifficulte(int difficulte) { + return switch (difficulte) { + case 1 -> "FACILE"; + case 2 -> "MOYEN"; + case 3 -> "DIFFICILE"; + default -> "FACILE"; // Valeur par défaut + }; + } +} diff --git a/src/TestPendu.class b/src/TestPendu.class new file mode 100644 index 0000000000000000000000000000000000000000..321ce8ea0d12ee921be95a91be206ac3a87bc21a GIT binary patch literal 2851 zcmX^0Z`VEs1_oP(HCzl#49x5dEIbUX3~Y=H0$GV=iTXK-dFlH8Nm;4MC5#MgHko;u zC3cJq%o>_u>W`3S; zeo1jaYFYt1kY1|>!Y2j`6Z%;L=A;?ydIoJ56`%(S%3{QR10b0*(exkcI(BLfFW#wRl`m61V2LlY8w$gTl}kq!@oE`uH;1AlsIiEn<1V@_&fNq%NgDkFoa zh9?$191I4G45qF{MX9Al3RVh z)8k?=VlZZBFyUb^1-Tn3K|w-?k%28IH7~s+gNwnO!GfK^l83>H!5Wrkz=_JSs3@_r zn2~`cEi)&Fk%3Jk+SwVD0&G!|o=0MFMsR8g7lRE0Gssd0P!e)vWMI{Zb_T_OGb00I zJV?Tohrx}(osoefIX|x?F*C22kwF?c)|@jEi-J=NOH=cbQ>`_lgcukYJb4(r7`z!7 z#B&p~Q=Rkkk`qh9GfOg@^Ye;J67x!m85z`&O@R2!8cRS5F)%Xtf(-LxWDwKv#2(fG zj0~bKsb!gYsZ|Q4d8rCHsU;;vsR~vKptKmo!w?Kgh^*iw2l7uS4?`Fz;<-!mee%mw zi<}dSQ$gYpJPeTxQH%`inZ>TT1tpc>q!I;^iQ!?0Wr$;BU`x(OEOIPiWMI+o)O6-z zNMJ~0XGr2zCtP-a99DM+DWtr^9^kj==T9+qEPtdLliTBVS3cxBe%1q!Lf#fg=N zS3=VjG$0f~Hsta!<|+@#c^ki?{%R7M7t+(b|@DW(yP znT<8W7#VnjOA?c_eG?17>e(44Ffs^ZQOeFRiIIUR+L@7oD>%QjC^^+F6J$Cc+zEQ1 zC}Ly~aLUgwDK05WEbvV&$;eMB=4WG=&c!f;VJ17nEKs7I&B&kvQVOXMGV{vvvs3jU zi5-$D+!B*Z@{1}N8D=0yGE^bNP>;mCl$_LJ6`%b4?9u{jOphUnplA%KEJ($o9NE9H z)P!k-b7D?TaArxWH3!37Mg|Tp-~18ds-URglL{^+53ejq z%!FFFl#xLVVxdA#eo--~rUB)`^wiwcyb^_!)MAhhuv-`zcsxOssdG+ZadB!fJHrY_ z233sU#}=yW467I!)JvfCK6tym;kjx+FpWc9Z(NN<#6*~VbF zht-Nzl2ssn2ZPye2Ajz340cv*%x3HYY-Svy?4lft7*6kIFp899-OgYyE-{s;4(Q(4B?V2qFmb;@@F%cFq?6Ua)TYch(Sh@ zMU;CRL$oN@0tPNgR#9$IuFw{4#^wJXfXpcdnZv->!p;cdm4bNxP2g?@8BsoyL3k5` zs3glShAOa&moo@J`PE>)_BMu^vF)%PhGVuLpaAII(XXs~VU}t9#Vq|A9Vqo~sAkV;w zBF4@zk)0upk&%Jn4?`F`gV7%bMaDl2l8iFH7+AS}GH@{|@caiQRd$Ac21a& lettresDevinees = new HashSet<>(); + int erreurs = 0; + int maxErreurs = 6; + + while (erreurs < maxErreurs && new String(motCache).contains("_")) { + System.out.println("\nMot : " + new String(motCache)); + System.out.println("Erreurs : " + erreurs + "/" + maxErreurs); + System.out.print("Devinez une lettre : "); + String input = scanner.nextLine().toLowerCase(); + if (input.isEmpty()) continue; + + char lettre = input.charAt(0); + if (lettresDevinees.contains(lettre)) { + System.out.println("Vous avez déjà essayé cette lettre !"); + continue; + } + + lettresDevinees.add(lettre); + if (mot.indexOf(lettre) >= 0) { + for (int i = 0; i < mot.length(); i++) { + if (mot.charAt(i) == lettre) motCache[i] = lettre; + } + System.out.println("Bien joué !"); + } else { + erreurs++; + System.out.println("Raté !"); + } + } + + if (new String(motCache).equals(mot)) { + System.out.println("\nFélicitations ! Vous avez trouvé le mot : " + mot); + } else { + System.out.println("\nVous avez perdu ! Le mot était : " + mot); + } + + scanner.close(); + + } catch (IOException e) { + System.err.println("Erreur lors du chargement des mots : " + e.getMessage()); + } + } +}