Compare commits

..

No commits in common. "2240489424005a3bee90d0f0835717f45fa5f754" and "3deff4ab6d9c294fc4074d8a5d9eec9ecc29731d" have entirely different histories.

8 changed files with 37 additions and 48 deletions

BIN
case_deux.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

BIN
case_mine.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

BIN
case_trois.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
case_un.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

BIN
case_zero.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

View file

@ -59,14 +59,10 @@
<br>
<label for="largeur">Largeur:</label>
<input type="number" id="largeur" value="7">
<label for="nombre_mines">Nombre de mines:</label>
<input type="number" id="nombre_mines" value="10">
<br>
<label for="nombre_mines">Nombre de mines:</label>
<input type="number" id="nombre_mines" value="10">
<label for="number_mines">Nombre de mines:</label>
<input type="number" id="number_mines" value="10">
<br><br>
<button id="save-options">Sauvegarder</button>
<button id="close-options">Fermer</button>
</div>

View file

@ -1,26 +1,21 @@
//Initialisation des constantes
let grille = [];
let hauteur = 7;
let largeur = 7;
let nombre_mines = 10 ;
let premier_click = true ;
let number_mines = 10 ;
let first_click = true ;
let arret=0;
let cases_restantes = hauteur*largeur - nombre_mines ;
//Assignation de leurs fonctions aux différents boutons
let cases_restantes = hauteur*largeur - number_mines ;
function gererOptions() {
const newHauteur = parseInt(document.getElementById('hauteur').value);
const newLargeur = parseInt(document.getElementById('largeur').value);
const newNumberMines = parseInt(document.getElementById('nombre_mines').value);
const newNumberMines = parseInt(document.getElementById('number_mines').value);
if (newHauteur > 12 || newLargeur > 12) {
alert("Les dimensions ne doivent pas dépasser 12x12.");
return;
}
const maxMines = newHauteur * newLargeur - 1;
if (newNumberMines < 1 || newNumberMines > maxMines) {
alert(`Le nombre de mines doit être entre 1 et ${maxMines}.`);
@ -29,8 +24,7 @@ function gererOptions() {
hauteur = newHauteur;
largeur = newLargeur;
nombre_mines = newNumberMines;
number_mines = newNumberMines;
document.getElementById('options-popup').classList.remove('show');
resetJeu();
}
@ -53,8 +47,7 @@ document.getElementById('save-options').removeEventListener('click', gererOption
document.getElementById("fin_game").addEventListener("click", resetJeu) ;
function entierRandom(maxi) { //fonction pour obtenir un entier aléatoire entre 0 et maxi
function getRandomInt(maxi) {
return Math.floor(Math.random() * maxi);
}
@ -78,7 +71,7 @@ function jeuFini() {
return true; // Toutes les conditions sont remplies
}
function MontrerMines() { //fonction pour révéler toutes les mines sur le plateau après un essai raté
function MontrerMines() {
for (let i = 0; i < hauteur; i++) {
for (let j = 0; j < largeur; j++) {
if (grille[i][j] === 9) {
@ -90,7 +83,7 @@ function MontrerMines() { //fonction pour révéler toutes les mines sur le plat
}
}
function creerGrille(haut, larg, mine_nb, x_premier, y_premier) {
function creerGrille(haut, larg, mine_nb, x_first, y_first) {
grille.length = haut;
for (var i = 0; i < haut; i++) {
grille[i] = Array(larg);
@ -100,17 +93,17 @@ function creerGrille(haut, larg, mine_nb, x_premier, y_premier) {
}
for (var k = 0; k < mine_nb; k++) {
let nouv_x = entierRandom(larg);
let nouv_y = entierRandom(haut);
let new_x = getRandomInt(larg);
let new_y = getRandomInt(haut);
while (grille[nouv_y][nouv_x] == 9 || (nouv_y == y_premier && nouv_x == x_premier)) {
nouv_x = entierRandom(larg);
nouv_y = entierRandom(haut);
while (grille[new_y][new_x] == 9 || (new_y == y_first && new_x == x_first)) {
new_x = getRandomInt(larg);
new_y = getRandomInt(haut);
}
grille[nouv_y][nouv_x] = 9;
for (var m = Math.max(0, nouv_y - 1); m < Math.min(haut, nouv_y + 2); m++) {
for (var n = Math.max(0, nouv_x - 1); n < Math.min(larg, nouv_x + 2); n++) {
grille[new_y][new_x] = 9;
for (var m = Math.max(0, new_y - 1); m < Math.min(haut, new_y + 2); m++) {
for (var n = Math.max(0, new_x - 1); n < Math.min(larg, new_x + 2); n++) {
if (grille[m][n] != 9) {
grille[m][n]++;
}
@ -197,9 +190,9 @@ function selectImage(idCase) {
const y = parseInt(coords[0]) ;
const x = parseInt(coords[1]) ;
if (premier_click) {
creerGrille(hauteur,largeur,nombre_mines,x,y) ;
premier_click = false ;
if (first_click) {
creerGrille(hauteur,largeur,number_mines,x,y) ;
first_click = false ;
chrono() ;
}
@ -245,11 +238,13 @@ function resetJeu() {
const divJeu = document.getElementById("jeu") ;
divJeu.removeChild(divJeu.children[0]) ;
grilleButtons(hauteur, largeur) ;
cases_restantes = hauteur*largeur - nombre_mines ;
cases_restantes = hauteur*largeur - number_mines ;
arret = 1 ;
premier_click = true ;
first_click = true ;
document.getElementById("temps").value=0;
}
@ -289,15 +284,15 @@ function grilleButtons(haut, larg) {
for (var i=0;i<haut;i++) {
for (var j=0;j<larg;j++){
var nouvCase = document.createElement("BUTTON") ;
nouvCase.style.gridRow=(i+1).toString() ;
nouvCase.style.gridColumn = (j+1).toString() ;
nouvCase.classList.add("button_case") ;
nouvCase.id = i.toString() + "_" + j.toString() ;
nouvCase.style.background="url('case_vide.png')" ;
nouvCase.addEventListener("click", changeImageClick);
nouvCase.addEventListener("contextmenu", changeImageFlag);
divGrille.appendChild(nouvCase) ;
var newCase = document.createElement("BUTTON") ;
newCase.style.gridRow=(i+1).toString() ;
newCase.style.gridColumn = (j+1).toString() ;
newCase.classList.add("button_case") ;
newCase.id = i.toString() + "_" + j.toString() ;
newCase.style.background="url('case_vide.png')" ;
newCase.addEventListener("click", changeImageClick);
newCase.addEventListener("contextmenu", changeImageFlag);
divGrille.appendChild(newCase) ;
}
}

View file

@ -28,9 +28,7 @@
<script>
document.getElementById('play-button').addEventListener('click', () => {
window.location.href = 'demineur.html';
});
window.location.href = 'demineur.html';});
</script>
</body>
</html>