-1
void FireSimulator::spread()
{
int numberLoops;
if(x>y)
numberLoops=x;
else
numberLoops=y;
for(int k=0; k<=numberLoops+1; k++)
{
for(int i=1; i<x-1; i++)
{
for(int j=1; j<y-1; j++)
{
if((forest[i][j].getState()==2) && (forest[i][j+1].getState()==1))
{
forest[i][j+1]=2;
Print();
}
if((forest[i][j].getState()==2) && (forest[i+1][j].getState()==1))
{
forest[i+1][j]=2;
Print();
}
if((forest[i][j].getState()==2) && (forest[i][j-1].getState()==1))
{
forest[i][j-1]=2;
Print();
}
if((forest[i][j].getState()==2) && (forest[i-1][j].getState()==1))
{
forest[i-1][j]=2;
Print();
}
}
} }
}
FireSimulatorクラスは、火の広がりをシミュレートします。 A 2は書き込みツリーを表し、1はツリーを表し、0は空のスポットを表します。この機能は、現在のセルの近傍をチェックします。木が燃えていて、その隣に木があると、隣の木が燃えてしまいます。フォレスト(配列)内のすべてのセルをチェックする必要があります。私は3つのループでそれをしましたが、どのように再帰でそれを行うのですか?ループを再帰的に変換するには?
確認するx/y座標を受け入れる関数を考えてみましょう。指示されたセルをチェックし、隣人の座標とこの同じ機能を呼び出す。 – kicken