diff --git a/src/assets/square_1.png b/public/s1.png
similarity index 100%
rename from src/assets/square_1.png
rename to public/s1.png
diff --git a/src/assets/square_2.png b/public/s2.png
similarity index 100%
rename from src/assets/square_2.png
rename to public/s2.png
diff --git a/src/assets/square_3.png b/public/s3.png
similarity index 100%
rename from src/assets/square_3.png
rename to public/s3.png
diff --git a/src/assets/square_4.png b/public/s4.png
similarity index 100%
rename from src/assets/square_4.png
rename to public/s4.png
diff --git a/src/assets/square_5.png b/public/s5.png
similarity index 100%
rename from src/assets/square_5.png
rename to public/s5.png
diff --git a/src/assets/square_6.png b/public/s6.png
similarity index 100%
rename from src/assets/square_6.png
rename to public/s6.png
diff --git a/src/assets/square_7.png b/public/s7.png
similarity index 100%
rename from src/assets/square_7.png
rename to public/s7.png
diff --git a/src/assets/square_8.png b/public/s8.png
similarity index 100%
rename from src/assets/square_8.png
rename to public/s8.png
diff --git a/src/assets/square_Empty.png b/public/sClick.png
similarity index 100%
rename from src/assets/square_Empty.png
rename to public/sClick.png
diff --git a/public/sEmpty.png b/public/sEmpty.png
new file mode 100644
index 0000000..096b07c
Binary files /dev/null and b/public/sEmpty.png differ
diff --git a/src/assets/square_Exploded.png b/public/sExploded.png
similarity index 100%
rename from src/assets/square_Exploded.png
rename to public/sExploded.png
diff --git a/src/assets/square_Flag.png b/public/sFlag.png
similarity index 100%
rename from src/assets/square_Flag.png
rename to public/sFlag.png
diff --git a/src/assets/square_FlagWrong.png b/public/sFlagWrong.png
similarity index 100%
rename from src/assets/square_FlagWrong.png
rename to public/sFlagWrong.png
diff --git a/src/assets/square_Mine.png b/public/sMine.png
similarity index 100%
rename from src/assets/square_Mine.png
rename to public/sMine.png
diff --git a/src/assets/square_Question.png b/public/sQuestion.png
similarity index 100%
rename from src/assets/square_Question.png
rename to public/sQuestion.png
diff --git a/src/assets/square_Smiley.png b/public/sSmiley.png
similarity index 100%
rename from src/assets/square_Smiley.png
rename to public/sSmiley.png
diff --git a/src/assets/square_Unknown.png b/public/sUnknown.png
similarity index 100%
rename from src/assets/square_Unknown.png
rename to public/sUnknown.png
diff --git a/src/router/index.ts b/src/router/index.ts
index a45868d..8054d89 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -6,27 +6,27 @@ const router = createRouter({
{
path: '/',
name: 'home',
- component: () => import('../views/HomeView.vue')
+ component: () => import('@/views/HomeView.vue')
},
{
path: '/about',
name: 'about',
- component: () => import('../views/AboutView.vue')
+ component: () => import('@/views/AboutView.vue')
},
{
path: '/game',
name: 'game',
- component: () => import('../views/GameView.vue'),
+ component: () => import('@/views/GameView.vue'),
children: [
{
path: 'solo',
name: 'solo',
- component: () => import('../views/Game/SoloView.vue')
+ component: () => import('@/views/Game/SoloView.vue')
},
{
path: 'party',
name: 'party',
- component: () => import('../views/Game/PartyView.vue')
+ component: () => import('@/views/Game/PartyView.vue')
}
]
}
diff --git a/src/utils/game.ts b/src/utils/game.ts
index 3b33145..5874151 100644
--- a/src/utils/game.ts
+++ b/src/utils/game.ts
@@ -1,3 +1,46 @@
+type CellGrid = string[][] // type CellGrid (grille de jeu)
+type MineGrid = number[][] // type MineGrid (grille de bombes)
+
+function genCellGrid(width: number, length: number): CellGrid { // fonction genCellGrid (génération de la grille de jeu)
+ return Array.from({ length: width }, () => Array.from({ length: length }, () => "/sUnknown.png"))
+}
+
+function genMineGrid(width: number, length: number, nbMines: number): MineGrid { // fonction genMineGrid (génération des bombes)
+ const mineGrid: MineGrid = [] // initialisation de la grille de bombes
+ while (mineGrid.length < nbMines) { // boucle pour placer les bombes
+ const x = Math.floor(Math.random() * length) // position x de la bombe
+ const y = Math.floor(Math.random() * width) // position y de la bombe
+ const indice = [y, x] // id de la bombe
+ if (!mineGrid.includes(indice)) mineGrid.push(indice) // si la bombe n'est pas déjà placée, on la place
+ }
+ return mineGrid; // retour de la grille de bombes
+}
+
+function cliqueGauche(cellGrid: CellGrid, mineGrid: MineGrid, x: number, y: number) { // fonction main (début du jeu)
+ //const indice = [y, x] // id de la case cliquée
+ //if (mineGrid.includes(indice)) 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);
+ if (cellGrid[y][x] === '/sClick.png') return cellGrid[y][x] = '/sEmpty.png' // modification de l'image de la case
+}
+
+function cliqueDroit(cellGrid: string[][], x: number, y: number): void { // fonction cliqueDroit (flag d'une case) // modification de l'image de la case
+ switch (cellGrid[y][x]) {
+ case '/sUnknown.png':
+ cellGrid[y][x] = "/sFlag.png"
+ break
+ case '/sFlag.png':
+ cellGrid[y][x] = "/sQuestion.png"
+ break
+ case '/sQuestion.png':
+ cellGrid[y][x] = "/sUnknown.png"
+ break
+ }
+}
+
+
+/*
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
@@ -19,18 +62,7 @@ function caseVide(indice: number): void {
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);
-}
+export { genCellGrid, genMineGrid, cliqueGauche, cliqueDroit } // export des variables et fonctions
+export type { CellGrid, MineGrid } // export des types
\ No newline at end of file
diff --git a/src/views/Game/SoloView.vue b/src/views/Game/SoloView.vue
index 28bf95e..99235a9 100644
--- a/src/views/Game/SoloView.vue
+++ b/src/views/Game/SoloView.vue
@@ -1,5 +1,101 @@
+
+
Solo
+
+
- Bienvenue sur notre jeu !
+ Bienvenue sur notre jeu de démineur en ligne !
Pour jouer, il vous suffit de sélectionner le mode de jeu que vous souhaitez dans le menu ci-dessous.