javascript で掃海艇ゲームを作成しましたが、「expand()」関数 (以下を参照) を追加するまでは、最終的に非常にスムーズに実行されていました。3 つの問題があります。
- 展開すると、「flippedCount」に追加されるものが多すぎます (以下のコードを参照) - 右側の div の下の画像では、「flippedCount」が表示され、35 ではなく 39 が表示されます。
- その結果、プレイヤーが「expand()」中に 90 マス (勝つ量) を超えた場合、勝利画面は表示されません。
- また、適切に展開されません (下の画像を参照)。
関連するコードとリンクは、これら 2 つの画像の下にあります。
var flippedCount = 0;
var alreadySetAsZero = [];
var columnAmount = 10;
function processClick(clicked) { //i use a "(this)" to pass as "(clicked)"
nextToBombCheck( parseInt(clicked.id) );
checkWin();
}
nextToBombCheck( boxNum ) {
flippedCount++;
document.getElementById("flipped").innerHTML = flippedCount;
//long function setting "bombCount" to # bombs around clicked square goes here
if ( bombCount !== 0 ) {
//blah blah blah
} else {
alreadySetAsZero[ boxNum ] = "yes";
expand(boxNum);
}
}
function expand( emptyBoxId ) {
checkRightOfEmpty( emptyBoxId + 1 );
checkLeftOfEmpty( emptyBoxId - 1 );
checkAboveEmpty( emptyBoxId - columnAmount );
checkBelowEmpty( emptyBoxId + columnAmount );
}
function checkRightOfEmpty( boxToTheRightId ) {
//check if already marked as zero
if ( alreadySetAsZero[ boxToTheRightId ] === "yes" )
return;
//if box is at the edge
if ( boxToTheRightId % columnAmount === ( 0 ) ) {
//do nothing
} else {
nextToBombCheck( boxToTheRightId );
}
}
//and the rest are 3 similar functions
エキスパンションがないパターンや、反転カウントに数字が追加されたパターンを見つけることができませんでした。
ps タイトルについて申し訳ありませんが、他に何と呼んだらよいかわかりません