基本上我正在创建一个依赖于环绕元素的风/干的森林火灾程序。我有一个数组var [,]是20 x 20.中间的方块设置为“着火”。这是你点击button1后需要做的事情:评估火上设置的每一个方块,以确定其他人着火的概率。
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阵列,中间方块设置着火。我只是不知道如何获得当前着火的那个方块(数组元素)。
答案 0 :(得分: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]