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 0000000..1c591af Binary files /dev/null and b/src/assets/square_1.png differ diff --git a/src/assets/square_2.png b/src/assets/square_2.png new file mode 100644 index 0000000..c105f97 Binary files /dev/null and b/src/assets/square_2.png differ diff --git a/src/assets/square_3.png b/src/assets/square_3.png new file mode 100644 index 0000000..5fd0328 Binary files /dev/null and b/src/assets/square_3.png differ diff --git a/src/assets/square_4.png b/src/assets/square_4.png new file mode 100644 index 0000000..84a3274 Binary files /dev/null and b/src/assets/square_4.png differ diff --git a/src/assets/square_5.png b/src/assets/square_5.png new file mode 100644 index 0000000..9ea48eb Binary files /dev/null and b/src/assets/square_5.png differ diff --git a/src/assets/square_6.png b/src/assets/square_6.png new file mode 100644 index 0000000..6fe8221 Binary files /dev/null and b/src/assets/square_6.png differ diff --git a/src/assets/square_7.png b/src/assets/square_7.png new file mode 100644 index 0000000..5223232 Binary files /dev/null and b/src/assets/square_7.png differ diff --git a/src/assets/square_8.png b/src/assets/square_8.png new file mode 100644 index 0000000..ef5fb48 Binary files /dev/null and b/src/assets/square_8.png differ diff --git a/src/assets/square_Empty.png b/src/assets/square_Empty.png new file mode 100644 index 0000000..096b07c Binary files /dev/null and b/src/assets/square_Empty.png differ diff --git a/src/assets/square_Exploded.png b/src/assets/square_Exploded.png new file mode 100644 index 0000000..ddeded3 Binary files /dev/null and b/src/assets/square_Exploded.png differ diff --git a/src/assets/square_Flag.png b/src/assets/square_Flag.png new file mode 100644 index 0000000..31a189c Binary files /dev/null and b/src/assets/square_Flag.png differ diff --git a/src/assets/square_FlagWrong.png b/src/assets/square_FlagWrong.png new file mode 100644 index 0000000..6eab1f3 Binary files /dev/null and b/src/assets/square_FlagWrong.png differ diff --git a/src/assets/square_Mine.png b/src/assets/square_Mine.png new file mode 100644 index 0000000..e09dca6 Binary files /dev/null and b/src/assets/square_Mine.png differ diff --git a/src/assets/square_Question.png b/src/assets/square_Question.png new file mode 100644 index 0000000..075398b Binary files /dev/null and b/src/assets/square_Question.png differ diff --git a/src/assets/square_Smiley.png b/src/assets/square_Smiley.png new file mode 100644 index 0000000..12ecf3d Binary files /dev/null and b/src/assets/square_Smiley.png differ diff --git a/src/assets/square_Unknown.png b/src/assets/square_Unknown.png new file mode 100644 index 0000000..0c7d79f Binary files /dev/null and b/src/assets/square_Unknown.png differ 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); +}