我很无聊,只有30分钟的空闲时间,所以我决定在制作人生游戏时有一个破解。我遵循维基百科的规则,似乎没有正常工作。有人能告诉我我会做错什么吗?生命之死 - 死亡
以下是规则:
任何有两个活的邻居的活细胞都会死亡,好像是由于人口不足造成的。
任何有两个或三个活的邻居的活细胞都活在下一代。
任何超过三个活邻居的活细胞都会死亡,好像过度拥挤一样。
任何具有正好三个活的邻居的死细胞变成活细胞,就像通过繁殖一样。
public void PerformLogic()
{
if (in_game)
{
time_elapsed += rate;
if (time_elapsed > frame_rate)
{
time_elapsed = 0;
for (int x = 0; x < board_width; x++)
{
for (int y = 0; y < board_height; y++)
{
if (board[x, y] == alive)
{
int surrounding_cells = 0;
for (int x2 = -1; x2 <= 1; x2++)
{
for (int y2 = -1; y2 <= 1; y2++)
{
if (!(x2 + x <= -1 || y2 + y <= -1 || x + x2 >= board_width || y + y2 >= board_height))
{
if (board[x + x2, y + y2] == alive)
{
surrounding_cells++;
}
}
}
}
if (surrounding_cells < 2)
{
board[x, y] = dead;
}
if (surrounding_cells == 2 ||
surrounding_cells == 3)
{
board[x, y] = alive;
}
if (surrounding_cells > 3)
{
board[x, y] = dead;
}
}
else if (board[x, y] == dead)
{
int surrounding_cells = 0;
for (int x2 = -1; x2 <= 1; x2++)
{
for (int y2 = -1; y2 <= ; y2++)
{
if (!(x2 + x <= -1 || y2 + y <= -1 || x + x2 >= board_width || y + y2 >= board_height))
{
if (board[x + x2, y + y2] == alive)
{
surrounding_cells++;
}
}
}
}
if (surrounding_cells == 3)
{
board[x, y] = alive;
}
}
}
}
}
}
}
任何想法?
定义“似乎没有正常工作”?行为以何种方式不符合您的期望? –
“它似乎没有正常工作” - 堆栈溢出问题的一个很好的例子;)哪些工作不正常?请明确点。 –
我的天啊,请将代码分成更小的函数吧! – BlackBear