implémentation logique du jeu + règles dans le README

This commit is contained in:
Betasown
2024-10-24 00:52:55 +02:00
parent 53e4ddcc26
commit 19ab1bf034
18 changed files with 53 additions and 0 deletions

View File

@@ -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

BIN
src/assets/square_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

BIN
src/assets/square_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

BIN
src/assets/square_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

BIN
src/assets/square_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

BIN
src/assets/square_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

BIN
src/assets/square_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

BIN
src/assets/square_7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

BIN
src/assets/square_8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

BIN
src/assets/square_Empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

BIN
src/assets/square_Flag.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

BIN
src/assets/square_Mine.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

36
src/utils/game.ts Normal file
View File

@@ -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);
}