gpt4 book ai didi

c# - 生命游戏 - 死亡

转载 作者:行者123 更新时间:2023-11-30 19:46:35 29 4
gpt4 key购买 nike

我很无聊,只有 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;
}
}
}
}
}
}
}

有什么想法吗?

最佳答案

我相信你更新董事会太早了。生命游戏应该在扫描完整个棋盘后更新棋盘,而不是在扫描时更新棋盘。

例如:

if (surrounding_cells > 3)
{
board[x, y] = dead;
}

在此之后,对于它旁边的细胞,这个细胞将被视为死亡。

马克也是对的。

关于c# - 生命游戏 - 死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8381733/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com