C# 如何计算数组中的其他元素

C# 如何计算数组中的其他元素,c#,arrays,loops,evaluate,C#,Arrays,Loops,Evaluate,基本上,我正在创建一个森林火灾计划,它取决于周围元素的风/干燥度。我有一个数组var Trees[,]是20x20。中间广场被“点燃”。这就是单击按钮1后需要做的:评估被点燃的正方形周围的每个正方形,以确定其他正方形着火的概率 Color[,] map = new Color[WIDTH, HEIGHT]; for (int x = 0; x < WIDTH; x++) for (int y = 0; y < HEIGHT; y++) { if (x

基本上,我正在创建一个森林火灾计划,它取决于周围元素的风/干燥度。我有一个数组var Trees[,]是20x20。中间广场被“点燃”。这就是单击按钮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;
Color[,]map=新颜色[宽度、高度];
对于(int x=0;x

这是我设置的20 x 20阵列,中间的正方形被点燃。我只是不知道如何获得方阵(数组元素)围绕当前着火的方阵。

您可以从一个简单的循环开始

for (int i = 0; i < 20; i++)
{
    for (int j = 0; j < 20; j++)
    {
        var tree = Trees[i, j];
        // ...
    }
}
然后,我们可以只通过接触中心点的点进行循环

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][G]
[G][G][G]
[G][G][G][G]
[G][G][Y][Y]
[G][R][R][Y]
[G][G][Y][Y]
[G][G][G][G]

这看起来像是家庭作业。到目前为止,你试图解决什么问题?问题是什么?“请为我做”?在不考虑算法效率的情况下(采取更“全局”的观点),我会编写一个函数,给定坐标(单元格、x/y或您的设计使用的任何坐标),返回所有有效周围坐标(单元格等或您的设计使用的任何坐标)的列表。然后,您可以轻松地迭代返回的列表,并执行您需要的任何操作。@Andrey不,我的问题不是,请为我做。问题是,如果您不能阅读,我如何评估数组中心周围的位置。您可能可以通过使用数组的
Length
属性来进一步改进这一点,而不是硬编码20:-)因此,对通过数组中每个位置的每个循环使用一个,并从那里评估概率?小心超出数组的边界!如果您将它与
树[40,40]
一起使用,并且您有
beginX=39
beginY=39
,会发生什么情况?不好。@Callum-惊喜让编码变得有趣。:)非常感谢,我真的很感激。我从原始阵列中创建了另一个阵列,并实现了自动化,因此,如果一个阵列上有绿点,那么另一个阵列上有绿点,如果它着火了,那么从那里计算概率。泰因帮助混乱。
[G][G][G][G]
[G][G][Y][Y]
[G][R][R][Y]
[G][G][Y][Y]
[G][G][G][G]