From 19ab1bf034241d2b9406a47489f106237cb53d57 Mon Sep 17 00:00:00 2001 From: Betasown <85430879+betasown@users.noreply.github.com> Date: Thu, 24 Oct 2024 00:52:55 +0200 Subject: [PATCH] =?UTF-8?q?impl=C3=A9mentation=20logique=20du=20jeu=20+=20?= =?UTF-8?q?r=C3=A8gles=20dans=20le=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +++++++++++++++ src/assets/square_1.png | Bin 0 -> 169 bytes src/assets/square_2.png | Bin 0 -> 179 bytes src/assets/square_3.png | Bin 0 -> 173 bytes src/assets/square_4.png | Bin 0 -> 163 bytes src/assets/square_5.png | Bin 0 -> 162 bytes src/assets/square_6.png | Bin 0 -> 173 bytes src/assets/square_7.png | Bin 0 -> 160 bytes src/assets/square_8.png | Bin 0 -> 181 bytes src/assets/square_Empty.png | Bin 0 -> 117 bytes src/assets/square_Exploded.png | Bin 0 -> 184 bytes src/assets/square_Flag.png | Bin 0 -> 221 bytes src/assets/square_FlagWrong.png | Bin 0 -> 232 bytes src/assets/square_Mine.png | Bin 0 -> 195 bytes src/assets/square_Question.png | Bin 0 -> 131 bytes src/assets/square_Smiley.png | Bin 0 -> 702 bytes src/assets/square_Unknown.png | Bin 0 -> 141 bytes src/utils/game.ts | 36 ++++++++++++++++++++++++++++++++ 18 files changed, 53 insertions(+) create mode 100644 src/assets/square_1.png create mode 100644 src/assets/square_2.png create mode 100644 src/assets/square_3.png create mode 100644 src/assets/square_4.png create mode 100644 src/assets/square_5.png create mode 100644 src/assets/square_6.png create mode 100644 src/assets/square_7.png create mode 100644 src/assets/square_8.png create mode 100644 src/assets/square_Empty.png create mode 100644 src/assets/square_Exploded.png create mode 100644 src/assets/square_Flag.png create mode 100644 src/assets/square_FlagWrong.png create mode 100644 src/assets/square_Mine.png create mode 100644 src/assets/square_Question.png create mode 100644 src/assets/square_Smiley.png create mode 100644 src/assets/square_Unknown.png create mode 100644 src/utils/game.ts diff --git a/README.md b/README.md index 11f45ee..7aed63f 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,20 @@ npm run build ```sh npm run lint ``` + +## Fonctionnement du jeu + +case appuis : + -> case découverte X + ->bombe ? X + ->game over X + ->while casevide ? X + -> découverte case vide X + ->etc... X + -> case numéro ? X + ->découverte case numéro + ->end + -> case numéro ? X + ->découverte case numéro + ->end + diff --git a/src/assets/square_1.png b/src/assets/square_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c591af8ec6b24b0f469b73022b3a23a92240e9f GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%zrl z#WBR9_vl4Oz5@yzEC<$pjDL5zLTcX{+e*V*K^IO;Okro5-f@Q`gpFZRo`UPL*$kT+ zbnG7J{@{!_6nsEx9@8q(Rag1{to-aCXX@^rv-h7_wb_Qcgp+KE4;Z^Y3NA{S)ifPw O4TGnvpUXO@geCxpg*Zz9 literal 0 HcmV?d00001 diff --git a/src/assets/square_2.png b/src/assets/square_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c105f972ebd3d5a99e08629c66c799b8139577af GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%zcg z#WBR9ckQHuyax<8m@}^)w2@l8G4j`HsV-)&uhw()o18=2O^P}@7;do5nfvYd16he_ z%xsU@ZWerbmV98AL=DrAg|jjF`v(n5?*B^~_&mxOcU|xBV-G22yvobKkiB0bcjK`L Qd!SVep00i_>zopr08ghiRsaA1 literal 0 HcmV?d00001 diff --git a/src/assets/square_4.png b/src/assets/square_4.png new file mode 100644 index 0000000000000000000000000000000000000000..84a3274c858ae5153925a519eb79902a7c75bb37 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%zZf z#WBR9H#sLG6s3|H-9P!%iqIdk7ehjQi(%Untt^lf?eh%>N>h(G_)AHNJ}0fVQjpUXO@ GgeCyu(=WIH literal 0 HcmV?d00001 diff --git a/src/assets/square_5.png b/src/assets/square_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea48eb398ba70294d41aae1e5848d2ab21c4e15 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%y;P z#WBR9H#sLGOuvU$moPLfWF3hSO>> z4Zji@n0M@HHs|SJe8DCx%eEuN<-fs!*Gx%^_+ok6xI235*XSv*2jnm?82%SqJ8|Cz QEud8lp00i_>zopr04GN@7ytkO literal 0 HcmV?d00001 diff --git a/src/assets/square_7.png b/src/assets/square_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5223232a58d31ed439ec292a57684df4469ee1e9 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%y~T z#WBR9H#sLG4U2vu8YEN|}6-QSW--8>U4( z4%=k!PTf+@Xm>mFJ(JV6;G?WMKU6+0KF1)9#_>FVdQ&MBb@ E0My4aA^-pY literal 0 HcmV?d00001 diff --git a/src/assets/square_8.png b/src/assets/square_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5fb48814c1d59aceb956768e7cd0b93c00a8a6 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%z!o z#WBR9ckSfUf((ir&NpSby)&mwJNM;T2iNa|F|AL0+4Mu#P6`kdWc+aZ!MP>nO@S(h zTW4Mqu+e>=CdQfJ=Tw(1$|H3+;l?LTIIikiYjkvGqshS# dkppE#j4%Bq)F$sYoCCC#!PC{xWt~$(69C*mK2`t# literal 0 HcmV?d00001 diff --git a/src/assets/square_Flag.png b/src/assets/square_Flag.png new file mode 100644 index 0000000000000000000000000000000000000000..31a189ca6eaf83d24d51b08b46f0b3b5dcf1aef2 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZwBV3DVbV~B+0-~ Z`@>;=(|`Jj+dzjfc)I$ztaD0e0suKbPBZ`j literal 0 HcmV?d00001 diff --git a/src/assets/square_Mine.png b/src/assets/square_Mine.png new file mode 100644 index 0000000000000000000000000000000000000000..e09dca6095ca284c5c6cc86ac53e11fa422988ff GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP_Wd~ z#WBR9ckQG=z6J#zXY<1ct4#W?%|5HIrI)uSfk9Zo@ENlJ(-OYs*ITo$YO(1m aFf!Da36}7@DPIEA&EV`9K89h%4 zJU%|gYW;#z>1Jdk7Wmc{EGZthnpO|KX7^I>ul z#>QZ859;e-Wd(YB!D0ckxr>&TLHvGy;-+Y|UD#}Yr8FKNVR{;xo1virTrOB#gw9T= zs|%N6a1a_Be^5|RkQ$iI4E-1I=m?a`c&x(#6%~+`l}3an(|5YNf6~?lQ&Uh=105YP z=)nQ3uEOYOxCDB=3Q-)B1PKTG^74|kwfC4z@bm<8b6~Z`fYsG7Gz4X3u)GY1hab^s zG|9Uh2n5*O{f$ELjsAWg!64k;#(;7;G z1R(}IJq4Q$Ha9yM7|^EoQX(pg#lrRV0bZ{;YRt}7A(xA&)oLlS$V&N^BSN3g$JNzU z)EJt#;^N}C*2e*xnwqfN?dgnOLe1UX9Y&)u{C$m&j|VRVpOG``n2azXlS=I0~=>Px#07*qoM6N<$g5vu(WdHyG literal 0 HcmV?d00001 diff --git a/src/assets/square_Unknown.png b/src/assets/square_Unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7d79ffc8a4bb6c034c667c73e92bb24ffcbc66 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP|)7f z#WBR9_wD43ybKCFhk0K8H(xq^D(6A3-3C{ZmqbJwDJgk8dUwVvQmBkw--GFd{*5gQ lSnD}>&KU-AYo#`@K6xmSKYzuwe?X%cJYD@<);T3K0RVfJDf$2a literal 0 HcmV?d00001 diff --git a/src/utils/game.ts b/src/utils/game.ts new file mode 100644 index 0000000..3b33145 --- /dev/null +++ b/src/utils/game.ts @@ -0,0 +1,36 @@ +const directions: number[] = [-11, -10, -9, -1, 1, 9, 10, 11]; // directions possibles pour découvrir les cases +const champDeMines: number[] = []; // champ de mines (0 = case vide, 10 = bombe, 1 à 8 = nombre de bombes adjacentes) +for (let i = 0; i < 100; i++) {champDeMines.push(0);} // initialisation des cases à 0 +const casesDecouvertes: number[] = []; // cases découvertes (0 = case non découverte, 1 = case découverte, 2 = case flag) +for (let i = 0; i < 100; i++) {casesDecouvertes.push(0);} // initialisation des cases à 0 + +function bombe(): void { // fonction bombe (game over) + for (let i = 0; i < casesDecouvertes.length; i++) {casesDecouvertes[i] = 1;} +} + +function caseVide(indice: number): void { // fonction caseVide (découverte des cases adjacentes à une case vide) + for (let i = 0; i < directions.length; i++) { // parcours des directions + if (champDeMines[indice + directions[i]] !== 0) {decouvreCase(indice + directions[i]); return; } // si la case est un numéro, on ne fait rien + else if (casesDecouvertes[indice + directions[i]] === 2) {decouvreCase(indice + directions[i]); return;} // si la case est un drapeau, on ne fait rien + else {decouvreCase(indice + directions[i]); caseVide(indice + directions[i]);} // si la case est vide, on va dans la fonction caseVide + } +} + +function decouvreCase(indice: number): void { // fonction decouvreCase (découverte d'une case) + casesDecouvertes[indice] = 1; // modification dans le tableau des cases découvertes +} + +function flagCase(indice: number): void { // fonction flagCase (flag d'une case) + casesDecouvertes[indice] = 2; // modification dans le tableau des cases découvertes +} + +function cliqueGauche(indice: number): void { // fonction main (début du jeu) + if (champDeMines[indice] === 10) {bombe();} // si la case cliquée est une bombe, on va dans la fonction bombe + else if (champDeMines[indice] === 0) {caseVide(indice);} // si la case cliquée est vide, on va dans la fonction caseVide + else if (champDeMines[indice] !== 0) {decouvreCase(indice);} // si la case cliquée est un numéro, on va dans la fonction decouvreCase + decouvreCase(indice); +} + +function cliqueDroite(indice: number): void { // fonction cliqueDroite (flag d'une case) + flagCase(indice); +}