2011-11-19 121 views
1

好的,所以我编写了生命游戏,我差不多完成了,但是我在用于使细胞存活和死亡的算法遇到麻烦,它可以在函数calculate 。生命的游戏 - 算法问题C++

这是我收到的输入:http://ideone.com/ywEtC

这里是从我用同样模式的网站的screenie(在评论中发现的),它显示了预期的输出。

我已经尝试过让它不会将新创建的单元计算为邻居,但结果更糟。可供参考的来源可以在这里找到:https://github.com/Legitimate/Conway-s-Game-of-Life/blob/master/gameoflife4.cpp

+0

这里是预期的输出:http://i.minus.com/iIPLE7LoZSU7t.png – Legitimate

回答

6

你的问题是,你需要双缓冲区,因为在你改变一个值后,其他值将不知道它的原始值。
例如

--- 
+++ 
--- 

(0,1):它有1个邻居和必须死:

--- 
-++ 
--- 

(1,1):它有1个邻居和必须死:

--- 
--+ 
--- 

( 2,1):它有0个邻居并且必须死亡:

--- 
--- 
--- 

虽然受到感染的输出w生病是:

-+- 
-+- 
-+- 

此外,使用字符数组的效率非常低,需要翘曲bit_vector,使其二维的,也会使双缓冲更加容易。

+1

这是我在互联网上听过的最好的东西。现在我明白为什么人们在他们的来源中有2个2D阵列。多谢,伙计! – Legitimate