首页 > 解决方案 > 一次评估所有值的for循环?

问题描述

所以我有一个元胞自动机,我可以在图像上放置像素,并且每个“滴答”都会向下移动一个像素。现在的问题是因为 for 循环是这样的:

for(int x = 0; x < 100; x++){
   for(int y = 0; y < 100; y++){
     //Check if nothing below (x,y) pixel and move it down if so
   }
}

然后像素被传送到底部,因为它们在 y 循环的每次迭代中都向下移动。我通过使 y 循环从 100 下降到 0 而不是 0 到 100 来解决它,所以它向上迭代但是如果我想让我的像素在某些情况下向上移动它就行不通。

也许是一个双循环,它列出了要移动的像素以及第一个像素的移动位置,并在第二个中实际执行它,但这似乎性能很重,我相信有更好的解决方案

PS:如果您有更好的问题标题,请告诉我

标签: c#cellular-automata

解决方案


假设您在内部 for 循环中想要做的事情正确,这样的事情会起作用吗?

static void MovePixels(bool moveUp)
{
    for (int x = 0; x < 100; x++)
    {
        if (moveUp)
        {
            for (int y = 0; y < 100; y++)
            {
            }
        }
        else
        {
            for (int y = 100; y > 0; y--)
            {
            }
        }
    }
}

推荐阅读