在C#中随机填充真假布尔值和其他问题

时间:2018-11-15 12:47:28

标签: c# arrays matrix

目前正在大学学习,学习编程,我得到了我无法真正解决的作业。

我的任务是创建Conway的生命游戏,在其中创建一个必须用“单元格”填充的数组 这些细胞可以是死亡的,也可以是活的,您可以使用随机的死亡和活细胞随机填充阵列。 我的第一个难题是用零和一填充细胞,零代表死细胞,而一则代表活细胞。 游戏中有一些规则,例如

-如果一个活动的单元中有2个或更少的活动邻居,则该单元会死亡 -如果一个存活的小区有2个或3个存活的邻居,则它仍然存活 -如果一个活细胞有3个或更多的活邻居,则它会死亡 -如果一个死细胞有3个活着的邻居,它就会活着

该游戏继续进行,有多个回合,所有这些单元根据规则更改其状态。我必须跟踪细胞状态变化,并且必须跟踪保持活动状态的最多数字。

我的问题是: 我应该上新课吗? -我应该用true / false或0/1声明它们的状态。如果我应该使用true / false,如何随机地将矩阵的true和false值填充? -正如您在规则中看到的那样,在我执行规则并更改单元的状态之前,我必须告诉该单元是存活还是死亡。您将如何做?

对不起,如果我确实问了很多问题。 提前致谢! 塔玛斯

2 个答案:

答案 0 :(得分:0)

您应该上新课吗? 您可以根据需要。我知道在某些班级中,当他们教C#时,他们希望您学习创建班级和对象,但是,如果这不是您的作业要求,则无需创建作业就可以进行管理。

您应该使用true / false还是0/1? 我看不出两者之间有什么大的不同。 正确/错误可能会使用比0/1少的系统资源,但我只是在猜测,这可能取决于您如何检查它们的值。

如何用随机布尔值填充数组? 如果您使用的矩阵具有2层阵列 我会做类似的事情:

        int NumberOfColumns = 10;
        int NumberOfRows = 10;

        bool[,] Matrix = new bool[NumberOfRows, NumberOfColumns];

        Random rng  = new Random();

        for (int i = 0; i < NumberOfRows; i++)
        {
            for (int j = 0; j < NumberOfColumns; j++)
            {
                if (rng.Next(0, 2) == 1)
                {
                    Matrix[i,j] = true;
                }
                else
                {
                    Matrix[i,j] = false;
                }
            }
        }

答案 1 :(得分:0)

最简单的方法是创建单元格的类。 每个单元必须包含一个布尔值(如果已死,则为false;如果仍为活,则为true)。 (您可以在调用构造函数时随机选择布尔值)

下一步是创建一个单元格数组。

现在,您可以仅在true时使用线程,然后在其中使用foreach(ArrayofCell中的Cell c).....执行某些操作(例如,遵守规则)