Démineur Pbm IE/Firefox

Résolu/Fermé
bobenausaure Messages postés 228 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 - 15 janv. 2010 à 17:46
bobenausaure Messages postés 228 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 - 15 janv. 2010 à 19:02
Bonjour,
Voici mon code pour un démineur en Javascript.
Le problème est que sous IE, ca marche, mais pas sous Firefox. Et il faut absolument que ça marche sous Firefox. Que dois-je changer ?
Merci d'avance.

<script language="JavaScript">
// Réglage prédéfini
NbCols = 8;
NbLignes = 8;
NbMines = 10;
// tableau de couleurs (chaque chiffre possède une couleur)
color = new Array(8);
color[0] = "#0000FF";
color[1] = "#008000";
color[2] = "#E22000";
color[3] = "#000080";
color[4] = "#E29500";
color[5] = "#00DAE2";
color[6] = "#891114";
color[7] = "#4C1189";

function new_partie() {
// Fonction nouvelle partie, création du tableau de réglages de la partie
accueil = "<table align='center' class='demineur'><tr><td align='left'>Nombre de colonnes :</td><td><input type='text' name='NbCols' size='5' maxlength='50' value='" + NbCols + "' class='form'></td></tr>";
accueil += "<tr><td align='left'>Nombres de lignes :</td><td><input type='text' name='NbLignes' size='5' maxlength='256' value='" + NbLignes + "' class='form'></td></tr>";
accueil += "<tr><td align='left'>Nombre de mines :</td><td><input type='text' name='NbMines' size='5' maxlength='256' value='" + NbMines + "' class='form'></td></tr>";
accueil += "<tr><td align='left'><input type='submit' value='Jouer une partie' class='form' onClick='go();'><br><br></td><td></td></tr></table>";
document.getElementById('Corpus').innerHTML = accueil;
}

// fonction qui affiche le démineur lorsque l'user clique sur Jouer, selon les réglages de jeu
function go() {

// traduit la valeur saisie par l'user en un entier : si l'utilisateur saisit 6,3 colonnes, NbCols = 6
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 class='demineur' border=1 cellpadding=0 cellspacing=0 bordercolor=#000000 bordercolorlight=#000000 bordercolordark=#c1f57e><tr><td align=center colspan=";
tableau += NbCols + "><input type='button' value='Nouvelle partie' onClick='new_partie();' class='form2'></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 style="background-color:#c1f57e;color:#c1f57e;" type="button" value="@" class="form2" onclick="devoiler(' + j + ',' + i + ');" oncontextmenu="bombe(' + j + ',' + i + ');return(false)">';
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]!="M") {
Nb++;
// affichage de l'image de la bombe (police helvetica, lettre M)
carte[j][i] = "<font class='bomba2'>M</font>";
if (j!=0) {
if (carte[j-1][i]!="<font class='bomba2'>M</font>") {carte[j-1][i]++;}
if (i!=0) {
if (carte[j-1][i-1]!="<font class='bomba2'>M</font>") {carte[j-1][i-1]++;}
}
if (i!=(NbCols-1)) {
if (carte[j-1][i+1]!="<font class='bomba2'>M</font>") {carte[j-1][i+1]++;}
}
}

if (j!=(NbLignes-1)) {
if (carte[j+1][i]!="<font class='bomba2'>M</font>") {carte[j+1][i]++;}
if (i!=0) {
if (carte[j+1][i-1]!="<font class='bomba2'>M</font>") {carte[j+1][i-1]++;}
}
if (i!=(NbCols-1)) {
if (carte[j+1][i+1]!="<font class='bomba2'>M</font>") {carte[j+1][i+1]++;}
}
}

if (i!=0) {
if (carte[j][i-1]!="<font class='bomba2'>M</font>") {carte[j][i-1]++;}
}

if (i!=(NbCols-1)) {
if (carte[j][i+1]!="<font class='bomba2'>M</font>") {carte[j][i+1]++;}
}
}
}
}
}
NbCaseDec = 0;
NbCaseADec = (NbCols * NbLignes) - NbMines
document.getElementById('NbBomba').innerHTML = '<font class="bomba">' + bomba + '</font>';
}
else
{
accueil2 = accueil;
accueil = "Impossible, il faut qu'il y ai moins de mines que de cases<br>" + accueil;
new_partie();
accueil = accueil2;
}
}

function devoiler(lig,col) {
if (carte[lig-1][col-1] == "<font class='bomba2'>M</font>") {
fin('Perdu...');
}
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('Victoire !');
}
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]!="<font class='bomba2'>M</font>") {
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 bombe(lig, col) {
document.getElementById('cel' + lig + ',' + col).innerHTML = '<input style="background-color:#c1f57e;color:#000000;" type="button" value="O" class="bomba2" onClick="PasBombe(' + lig + ',' + col + ');">';;
bomba--;
document.getElementById('NbBomba').innerHTML = '<font class="bomba">' + bomba + '</font>';
Marque[lig-1][col-1] = 1;
}

function PasBombe(lig, col) {
document.getElementById('cel' + lig + ',' + col).innerHTML = '<input style="background-color:#c1f57e;color:#c1f57e;" type="button" value="@" class="form2" onclick="devoiler(' + lig + ',' + col + ');" oncontextmenu="bombe(' + lig + ',' + col + ');">';
bomba++;
document.getElementById('NbBomba').innerHTML = '<font class="bomba">' + bomba + '</font>';
Marque[lig-1][col-1] = 0;
}
</script>
</head>

<body onLoad='new_partie();'>
<form name='FormCorps'>
<div id='Corpus'></div>
</form>
<br /><a href="demineur/demineur.html">Rejouer</a>
</body>
A voir également:

1 réponse

bobenausaure Messages postés 228 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 16
15 janv. 2010 à 19:02
Est-ce un problème de compatibilité avec Firefox concernant document.getElementById ?
0