Petit demineur v2

Description

Ben voila, contrairement à ce que j'avais dit, j'ai un peu retravailler le demineur (mais pas graphiquement...) J'ai ajouté un petit très utile : le "clic droit" et UN seul bouton pour les deux

Source / Exemple :


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>..:: DEMINEUR ::..</title>
<script language="JavaScript">
NbCols = 10;
NbLignes = 10;
NbMines = 10;
color = new Array(8);
color[0] = "#0000FF";
color[1] = "#E22000";
color[2] = "#0BE200";
color[3] = "#E200CF";
color[4] = "#E29500";
color[5] = "#00DAE2";
color[6] = "#891114";
color[7] = "#4C1189";
Niv = new Array(3);
for (i=0;i<3;i++) {
  Niv[i] = new Array(3);
}
Niv[0][0] = 10;
Niv[0][1] = 10;
Niv[0][2] = 10;
Niv[1][0] = 16;
Niv[1][1] = 16;
Niv[1][2] = 40;
Niv[2][0] = 16;
Niv[2][1] = 30;
Niv[2][2] = 99;

function NewPartie() {
  accueil = "<table><tr><td>Nb De colonnes :</TD><TD><input type='text' name='NbCols' size='5' maxlength='256' value='" + NbCols + "'></td></tr>";
  accueil += "<tr><td>Nb De Lignes :</td><td><input type='text' name='NbLignes' size='5' maxlength='256' value='" + NbLignes + "'></td></tr>";
  accueil += "<tr><td>Nb De mines :</td><td><input type='text' name='NbMines' size='5' maxlength='256' value='" + NbMines + "'></td></tr>";
  accueil += "<tr><td><input type='submit' value='Jouer' onClick='go();'><br><br>";
  accueil += 'Niveau :<br><input onclick="niveau(0);" type="button" value="Je veux vivre!!!"><br>';
  accueil += '<input onclick="niveau(1);" type="button" value="Une chance sur deux..."><br>';
  accueil += '<input onclick="niveau(2);" type="button" value="Suicidaire..."><br>';
  document.getElementById('Corpus').innerHTML = accueil;
}

function go() {
 NbCols = Math.floor(FormCorps.NbCols.value);
 NbLignes = Math.floor(FormCorps.NbLignes.value);
 NbMines = Math.floor(FormCorps.NbMines.value);
 bomba = NbMines;
 if (NbMines < (NbLignes*NbCols)) {
  tableau = "<table border=1><tr><td align=center colspan=";
  tableau += NbCols + "><input type='button' value='Nouvelle partie' onClick='NewPartie();'></td></tr>";
  carte = new Array(NbLignes);
  for (j=1;j<=NbLignes;j++) {
    tableau += '<tr>';
    for (i=1;i<=NbCols;i++) {
      tableau += '<td width=30 height=30 align=center><div id="cel' + j + ',' + i + '">';
	  tableau += '<input type="button" value="?" onclick="devoiler(' + j + ',' + i + ');" oncontextmenu="bombe(' + j + ',' + i + ');">';
	  tableau += '</div></td>'; 
    }
	tableau += '</tr>';
  }
  tableau += "<tr><td align=center colspan=";
  tableau += NbCols + "><div id='NbBomba'></div></td></tr></table>";
  document.getElementById('Corpus').innerHTML = tableau;
  carte = new Array(NbLignes);
  CaseJoue = new Array(NbLignes);
  Marque = new Array(NbLignes);
  for (j=0;j<NbLignes;j++) {
    carte[j] = new Array(NbCols);
	CaseJoue[j] = new Array(NbCols);
	Marque[j] = new Array(NbCols);
	for (i=0;i<NbCols;i++) {
	  carte[j][i] = 0;
	  CaseJoue[j][i] = 0;
	  Marque[j][i] = 0;
	}
  }
  Nb = 0;
  while (Nb<NbMines) {
    proba = (NbMines-Nb) / (NbCols * NbLignes);
    for (j=0;j<NbLignes;j++) {
      for (i=0;i<NbCols;i++) {
	    u = Math.random();
	    if (u<proba && Nb <NbMines && carte[j][i]!="#") {
	      Nb++;
	  	  carte[j][i] = "#";
		  if (j!=0) {
		    if (carte[j-1][i]!="#") {carte[j-1][i]++;}
		    if (i!=0) {
		      if (carte[j-1][i-1]!="#") {carte[j-1][i-1]++;}
		    }
		    if (i!=(NbCols-1)) {
		      if (carte[j-1][i+1]!="#") {carte[j-1][i+1]++;}
		    }
		  }
		
		  if (j!=(NbLignes-1)) {
		    if (carte[j+1][i]!="#") {carte[j+1][i]++;}
		    if (i!=0) {
		      if (carte[j+1][i-1]!="#") {carte[j+1][i-1]++;}
		    }
		    if (i!=(NbCols-1)) {
		      if (carte[j+1][i+1]!="#") {carte[j+1][i+1]++;}
		    }
		  }
		
		  if (i!=0) {
		    if (carte[j][i-1]!="#") {carte[j][i-1]++;}
		  }
	 	
		  if (i!=(NbCols-1)) {
		    if (carte[j][i+1]!="#") {carte[j][i+1]++;}
		  }
	    }
	  }
	}
  }
  NbCaseDec = 0;
  NbCaseADec = (NbCols * NbLignes) - NbMines
  document.getElementById('NbBomba').innerHTML = '<font size="5" color="#009900">' + bomba + '</font>';
 }
 else
 {
  accueil2 = accueil;
  accueil = "Impossible, il faut qu'il y ai moins de mines que de cases<br>" + accueil;
  NewPartie();
  accueil = accueil2;
 }
}

function devoiler(lig,col) {
  if (carte[lig-1][col-1] == "#") {
    fin('boum');
  }
  else
  {
    if (CaseJoue[lig-1][col-1]==0 && Marque[lig-1][col-1]==0) {
      NbCaseDec++;
	  CaseJoue[lig-1][col-1]=1;
	}
    if (carte[lig-1][col-1]!=0  && Marque[lig-1][col-1]==0) {
      document.getElementById('cel' + lig + ',' + col).innerHTML = "<font color='" + color[(carte[lig-1][col-1]-1)] + "'>" + carte[lig-1][col-1] + "</font>";
	}
	else
	{
	  if (Marque[lig-1][col-1]==0) {
	    document.getElementById('cel' + lig + ',' + col).innerHTML = carte[lig-1][col-1];
	  }
	}
	if (NbCaseDec == NbCaseADec) {
	  fin('Bravo');
	}
	if (carte[lig-1][col-1]==0 && Marque[lig-1][col-1]==0) {
	  if (lig!=1 && col!=1 && CaseJoue[lig-2][col-2]==0) {
        devoiler((lig-1),(col-1));
      }
	  if (lig!=1 && CaseJoue[lig-2][col-1]==0) {
	    devoiler((lig-1),col);
      }
	  if (lig!=1 && col!=1 && CaseJoue[lig-2][col]==0) {
        devoiler((lig-1),(col+1));
      }
	  
	  if (col!=1 && CaseJoue[lig-1][col-2]==0) {
	    devoiler(lig,(col-1));
	  }
	  if (col!=NbCols && CaseJoue[lig-1][col]==0) {
	    devoiler(lig,(col+1));
	  }
	  
	  if (lig!=NbLignes && col!=1  && CaseJoue[lig][col-2]==0) {
	    devoiler((lig+1),(col-1));
	  }
	  if (lig!=NbLignes  && CaseJoue[lig][col-1]==0) {
	    devoiler((lig+1),col);
	  }
	  if (lig!=NbLignes && col!=NbCols  && CaseJoue[lig][col]==0) {
	    devoiler((lig+1),(col+1));
	  }
	}
  }
}

function fin(message) {
  alert(message);
  for (j=0;j<NbLignes;j++) {
    for (i=0;i<NbCols;i++) {
      if (carte[j][i]!=0 && carte[j][i]!="#") {
        document.getElementById('cel' + (j+1) + ',' + (i+1)).innerHTML = "<font color='" + color[(carte[j][i]-1)] + "'>" + carte[j][i] + "</font>";
	  }
	  else
	  {
	    document.getElementById('cel' + (j+1) + ',' + (i+1)).innerHTML = carte[j][i];
	  }
	}
  }
}

function niveau(n) {
  FormCorps.NbLignes.value = Niv[n][0];
  FormCorps.NbCols.value = Niv[n][1];
  FormCorps.NbMines.value = Niv[n][2];
}

function bombe(lig, col) {
  document.getElementById('cel' + lig + ',' + col).innerHTML = '<input style="background-color:#FF3300;color:#33FF33;" type="button" value="@" onClick="PasBombe(' + lig + ',' + col + ');">';;
  bomba--;
  document.getElementById('NbBomba').innerHTML = '<font size="5" color="#009900">' + bomba + '</font>';
  Marque[lig-1][col-1] = 1;
}

function PasBombe(lig, col) {
  document.getElementById('cel' + lig + ',' + col).innerHTML = '<input type="button" value="?" onclick="devoiler(' + lig + ',' + col + ');" oncontextmenu="bombe(' + lig + ',' + col + ');">';
  bomba++;
  document.getElementById('NbBomba').innerHTML = '<font size="5" color="#009900">' + bomba + '</font>';
  Marque[lig-1][col-1] = 0;
}
</script>
</head>
<body onLoad='NewPartie();'>
<form name='FormCorps'>
<div id='Corpus'>
</div>
</form>
</body>

Conclusion :


Tout tient dans un fichier, Pour ceux qui télécharge le zip, c'est le fichier index.htm...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.