bobenausaure
Messages postés228Date d'inscriptionsamedi 17 février 2007StatutMembreDernière intervention27 janvier 2013
-
15 janv. 2010 à 17:46
bobenausaure
Messages postés228Date d'inscriptionsamedi 17 février 2007StatutMembreDernière intervention27 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.
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));
}
}
}
}
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.