JavaScript プロジェクト用の掃海艇ゲームを作成していますが、頭が回らないという問題に遭遇しました。知らない人のためにマインスイーパ ゲームで空のセル (周囲に地雷がなく、数字が表示されないセル) をクリックすると、互いに隣接している空のセルのブロック全体が表示されます。 、これらの空のブロックを含む「数字の壁」が見つかったときに停止します。以下の例:
[1] http://datagenetics.com/blog/june12012/hole.png
これには、どのブロックを公開するかを決定するための再帰関数が必要です。現時点での私のコードは、クリックされたブロックのみを明らかにします:
function revealGridContents()
{
switch (positionClickContents)
{
case 0:
ctx.drawImage(clickedImage, (xClick*20), (yClick*20));
break;
case 1:
ctx.drawImage(num1Image, (xClick*20), (yClick*20));
break;
case 2:
ctx.drawImage(num2Image, (xClick*20), (yClick*20));
break;
case 3:
ctx.drawImage(num3Image, (xClick*20), (yClick*20));
break;
case 4:
ctx.drawImage(num4Image, (xClick*20), (yClick*20));
break;
case 5:
ctx.drawImage(num5Image, (xClick*20), (yClick*20));
break;
case 6:
ctx.drawImage(num6Image, (xClick*20), (yClick*20));
break;
case 7:
ctx.drawImage(num7Image, (xClick*20), (yClick*20));
break;
case 8:
ctx.drawImage(num8Image, (xClick*20), (yClick*20));
break;
};
};
switch ステートメントに渡される数値は、配列内のデータの値ですgrid[xClick][yClick]
。たとえば、4 は、周囲に 4 つの地雷があるブロックを表すため、4 の画像が表示されます。
ケース 0 は、空白のブロックがクリックされた場合なので、コードを変更する必要がありますが、どうすればよいかわかりません。
私が理解できることrevealGridContents();
から、ケース 0 から関数を呼び出す必要がありますが、確認したい各正方形の xClick と yClick (配列位置の x と y の値) に新しい値を渡します。
私が次に何をする必要があるかを明らかにする助けがあれば、大歓迎です!