ブロック「0」に隣接するすべてのタイルを開く再帰的な方法を使用して掃海艇を作成しています。
タイトルで述べた例外が発生するまで、すべてがうまくいきます。で例外が発生しif(removalList[num1][num2] == 1){return;}
ますが、削除リストのすべての初期値をゼロに設定してください。(参考までに、は後で削除1
するためにアイテムが既に に追加されていることを意味します)。removalList
また、 を実行して範囲内かどうかを確認しましたif(num1 > gameWidth || num2 > gameHeight || num1 < 0 || num2 < 0){return;}. (gameHeight and width are both 10)
が、何らかの理由で範囲外であると考えられます。
ご協力いただきありがとうございます!
private void function(int c5, int r5)
{
int num1 = c5;
int num2 = r5;
if(num1 > gameWidth || num2 > gameHeight || num1 < 0 || num2 < 0)
{
return;
}
if(removalList[num1][num2] == 1)
{
return;
}
if(blocks[num1][num2] == 0)
{
System.out.println("Added (" + num1 + ", " + num2 + ") to removal list.");
removalList[num1][num2] = 1;
function(num1-1, num2);
function(num1, num2-1);
function(num1+1, num2);
function(num1, num2+1);
}
else if(blocks[num1][num2] > 0 && blocks[num1][num2] < 9)
{
removalList[num1][num2] = 1;
return;
}
else
{
return;
}
}