Renommage assets > /public + Refonte logique et interface de jeu
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user