所以,基本上,我一直在写这个生命游戏
PHP脚本.我的输出很糟糕,我无法理解!
整个方案由一个名为$world的二维数组组成,其中每个值对应一个2状态单元,可以是1或0(活着或死亡).每个小区有8个邻居.
计算系统下一个状态的规则如下:
>如果你有2-3个活着的邻居(1个),那么你下个回合就会活着.
>否则你已经死了.
我的实现如下:
(注意:$j_minus,$i_plus等指的是$j-1等,但要考虑边缘)
for($i=0;$i
{
for($j=0;$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
{
for($j=0;$j
{
echo $new_world[$i][$j]." ";
}
echo "
";}
无论$world的初始状态如何,我得到的是一个完全停滞的状态,充满线条和大块或者在2-3个这样的状态之间振荡.规则似乎没有正确应用!