php - 生命游戏 (PHP)- 不理解我的输出

标签 php rules conways-game-of-life

所以,基本上,我一直在编写这个生命游戏 PHP 脚本。我的输出很奇怪,我无法弄清楚! 整个方案由一个名为 $world 的二维数组组成,其中每个值对应一个可以为 1 或 0(存活或死亡)的 2 态单元。每个单元格有 8 个邻居。 计算系统下一状态的规则如下:

  1. 如果您有 2-3 个活着的邻居(1 个),那么您在下一回合还活着。
  2. 否则你就死定了。

我的实现如下: (注意:$j_minus$i_plus 等指的是 $j-1 等,但考虑了边缘)

for($i=0;$i<$size;$i++)
{ 
    for($j=0;$j<$size;$j++) 
    {

            if( ($world[$j_minus][$i] + $world[$j_plus][$i] + $world[$j][$i_minus] + $world[$j][$i_plus]+$world[$j_minus][$i_minus]+$world[$j_minus][$i_plus]+$world[$j_plus][$i_minus]+$world[$j_plus][$i_plus]) > 3 )
            {
                $new_world[$j][$i]=0;

            }

            else if( ($world[$j_minus][$i] + $world[$j_plus][$i] + $world[$j][$i_minus] + $world[$j][$i_plus]+$world[$j_minus][$i_minus]+$world[$j_minus][$i_plus]+$world[$j_plus][$i_minus]+$world[$j_plus][$i_plus])>= 2 )
            {
                $new_world[$j][$i]=1;

            }
            else {$new_world[$j][$i]=0;}
        }

}

应用这些规则后,使 $new_world 成为系统的新状态,我将使用以下命令将数组打印到屏幕上:

for($i=0;$i<$size;$i++)
{ 
    for($j=0;$j<$size;$j++) 
    {

        echo $new_world[$i][$j]." ";
    }
        echo "</p>";
}

无论 $world 的初始状态如何,我得到的要么是充满线条和大块的完全停滞状态,要么是在 2-3 个这样的状态之间振荡。规则似乎没有正确应用!

最佳答案

在纸上浏览一下,看看结果如何。您应该能够在几次循环后判断出计算不正确的地方。

关于php - 生命游戏 (PHP)- 不理解我的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497275/

相关文章:

php - 如何使用php从mysql列中提取超过1mb的数据

php - 无法通过网络浏览器访问 var/www/webmail/installer 来安装 Roundcube

php - sql从单个表单输入中查询多个字段

exception - 违反业务规则是否应该引发异常?

c++ - 未正确计算存活的相邻细胞

php - Symfony2 : Validation Halt on First Error

security - 如何使用 Firebase 规则仅向某些叶节点授予权限

java - SonarAnalyzer Java 规则

javascript - Conways 生命游戏算法无法正常工作

python - Conway 的 Python 人生游戏