現在javascriptでマインスイーパーを作成しています。
左クリックで地雷がないマスを全て開けたらポップで「ゲームクリア」表示をさせたい=ゲームクリアにさせたいのですが、現状全てを開けてもクリア条件にならないのが現状です。(ゲームクリアのポップが表示されません)
どなたかお助けをください。よろしくお願いします。
countb,countc,countdなど変更してもらっても平気です。
javascript
1 size = 10; // 値:1 ~ 10 2 ar = new Array(10); //爆弾の個数 3 var countb = 0; //爆弾の上のフラグ 4 var countc = 0; //全フラグの数 5 var countd = 0; 6 7 //左クリック 8 function onClick(event) { 9 var btn = event.target; // クリックされたボタン 10 var id = btn.id; // クリックされたボタンのid 11 var cou = 0; 12 var op = []; 13 // 左クリックした際の実装 14 15 if (btn.style.backgroundColor === "pink") { //フラグがあり、左クリックした場合 16 countc--; 17 } 18 19 btn.style.backgroundColor = "skyblue"; //左クリック押下時に色変化 20 btn.disabled = true; //2度目の左クリック禁止 21 id2 = parseInt(id.slice(3)); 22 x = parseInt(id.slice(3, -1)); //j=10;の位 23 y = parseInt(id.slice(4)); //i=1の位 24 25 if (ar.indexOf(id2) >= 0) { //押下したボタンと爆弾に設定したボタンが一致したら以下を表示 26 window.alert("Game Over"); 27 for (var i = 0; i < 10; i += 1) { 28 if (ar[i] >= 10) { //2桁の場合 29 var btn = document.getElementById('btn' + ar[i]); //btn + 設定した爆弾の番号 30 } else { //1桁の場合 31 var btn = document.getElementById('btn' + '0' + ar[i]); //btn + 0 + 設定した爆弾の番号 32 }// end if 33 btn.style.backgroundColor = "red"; //爆弾を赤色に変える 34 for (var j = 0; j < 10; j++) { 35 btn3 = document.getElementById('btn' + i + j); 36 btn3.disabled = true; //全てのボタンをロックする 37 } 38 } 39 } else { //爆弾 40 var count = hantei(x, y); 41 42 if (x !== 0 && y !== 0) { 43 var op = [('' + (x - 1) + (y - 1))]; 44 cou++; 45 } 46 if (x !== 0) { 47 op.push(('' + (x - 1) + y)); 48 cou++; 49 } 50 if (x !== 0 && y !== 9) { 51 op.push(('' + (x - 1) + (y + 1))); 52 cou++; 53 } 54 if (y !== 0) { 55 op.push(('' + x + (y - 1))); 56 cou++; 57 } 58 if (y !== 9) { 59 op.push(('' + x + (y + 1))); 60 cou++; 61 } 62 if (x !== 9 && y !== 0) { 63 op.push(('' + (x + 1) + (y - 1))); 64 cou++; 65 } 66 if (x !== 9) { 67 op.push(('' + (x + 1) + y)); 68 cou++; 69 } 70 if (x !== 9 && y !== 9) { 71 op.push(('' + (x + 1) + (y + 1))); 72 cou++; 73 } 74 btn.innerHTML = count; 75 76 if (count === 0) { //押下したボタンのカウント数が0だった場合 77 for (i = 0; i < cou; i++) { //再帰関数 78 var btn = document.getElementById('btn' + op[i]); 79 var e = document.createEvent("MouseEvents"); 80 e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 81 btn.dispatchEvent(e); 82 } 83 } 84 if (countb === ar.length && countc === 10) { //ar.length=爆弾のフラグの数と全フラグの数が一致した場合 85 countd++; 86 if (countd === 1) { 87 window.alert("clear!!"); 88 } 89 for (var i = 0; i < 10; i += 1) { 90 for (var j = 0; j <= 10; j++) { 91 btn3 = document.getElementById('btn' + i + j); 92 btn3.disabled = true; 93 } 94 } 95 } 96 } 97 }
回答1件
あなたの回答
tips
プレビュー