目前正在大学学习,学习编程,我得到了我无法真正解决的作业。
我的任务是创建Conway的生命游戏,在其中创建一个必须用“单元格”填充的数组 这些细胞可以是死亡的,也可以是活的,您可以使用随机的死亡和活细胞随机填充阵列。 我的第一个难题是用零和一填充细胞,零代表死细胞,而一则代表活细胞。 游戏中有一些规则,例如
-如果一个活动的单元中有2个或更少的活动邻居,则该单元会死亡 -如果一个存活的小区有2个或3个存活的邻居,则它仍然存活 -如果一个活细胞有3个或更多的活邻居,则它会死亡 -如果一个死细胞有3个活着的邻居,它就会活着
该游戏继续进行,有多个回合,所有这些单元根据规则更改其状态。我必须跟踪细胞状态变化,并且必须跟踪保持活动状态的最多数字。
我的问题是: 我应该上新课吗? -我应该用true / false或0/1声明它们的状态。如果我应该使用true / false,如何随机地将矩阵的true和false值填充? -正如您在规则中看到的那样,在我执行规则并更改单元的状态之前,我必须告诉该单元是存活还是死亡。您将如何做?
对不起,如果我确实问了很多问题。 提前致谢! 塔玛斯
答案 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).....执行某些操作(例如,遵守规则)