0

基本的には、サラウンド要素の風/乾燥に依存する森林火災プログラムを作成しています。20 x 20 の配列 var Trees [,] があります。中央の正方形は「燃えている」ように設定されています。これは、ボタン 1 をクリックした後に実行する必要があることです。発火した正方形の周りの各正方形を評価して、他の正方形が発火する確率を判断します。

Color[,] map = new Color[WIDTH, HEIGHT];
for (int x = 0; x < WIDTH; x++)
    for (int y = 0; y < HEIGHT; y++)
    {
        if (x == WIDTH / 2 && y == HEIGHT / 2)
            map[x, y] = Color.Red;
        else
            map[x, y] = Color.Green;
    }

        fireBox1.box = map;

これは、中央の正方形に火をつけてセットアップした 20 x 20 のアレイです。現在燃えているものの周りに正方形(配列要素)を取得する方法がわかりません。

4

1 に答える 1

2

簡単なループから始めることができます。

for (int i = 0; i < 20; i++)
{
    for (int j = 0; j < 20; j++)
    {
        var tree = Trees[i, j];
        // ...
    }
}

マトリックスを作成すると、中央は次のようになります。

[G][G][G]
[G][R][G]
[G][G][G]

次に、中心点に接する点のみをループできます。

int centerX = 9;
int centerY = 9;
int beginX = centerX - 1; 
int endX = centerX + 1; 
int beginY = centerY - 1; 
int endY = centerY + 1; 

for (int y = beginY; y <= endY; y++)
{    
    for (int x = beginX ; x <= endX; x++)
    {
        //Skip the center
        if (x == centerX && y == centerY)
            continue;       
        // Calculate the chance of catching on fire.
        if (IsWindyPoint(x, y) || IsDryPoint(x, y))
            map[x, y] = Color.Yellow;
    }
}

したがって、東に風が吹いていると仮定すると、これをマトリックスとして見る必要があります。

[G][G][G]
[G][R][Y]
[G][G][G]

そして最終的にはこのように展開します。

[G][G][G][G]
[G][G][Y][Y]
[G][R][R][Y]
[G][G][Y][Y]
[G][G][G][G]
于 2010-05-04T17:13:52.673 に答える