最初に、小さなバブル クリッカー ゲームを作成しています。このゲームでは、バブル (オランダ語で「Bubbel」) をクリックすると、はじけるバブルに直接触れている同じ色のすべてのバブルがはじけます。
コードの一部に少し問題があり、なぜこれが続くのかわかりません。コードは次のとおりです。
public void checkIfNeighbors(int x, int y)
{
bool left = false;
bool right = false;
bool up = false;
bool down = false;
if(x != 0)
left = Bubbels1[x - 1, y].GetType == Bubbels1[x, y].GetType && Bubbels1[x - 1, y].IsAlive;
if(x != 11)
right = Bubbels1[x + 1, y].GetType == Bubbels1[x, y].GetType && Bubbels1[x + 1, y].IsAlive;
if(y != 0)
up = Bubbels1[x, y - 1].GetType == Bubbels1[x, y].GetType && Bubbels1[x, y - 1].IsAlive;
if(y != 11)
down = Bubbels1[x, y + 1].GetType == Bubbels1[x, y].GetType && Bubbels1[x, y + 1].IsAlive;
if (left)
{
pop = true;
checkIfNeighbors(x - 1, y);
}
if (right)
{
pop = true;
checkIfNeighbors(x + 1, y);
}
if (up)
{
pop = true;
checkIfNeighbors(x, y - 1);
}
if (down)
{
pop = true;
checkIfNeighbors(x, y + 1);
}
if (pop)
{
Bubbels1[x, y].IsAlive = false;
}
}
これをより迅速かつ効率的にする方法はありますか? また、常にスタックオーバーフローが発生しますが、「if」を1つの「if」に減らすと、そうではありません(バブルラインが同じバブルの長さの12であっても)
何をしたかはわかりませんが、以前は何とか機能していました...