2011-11-19 72 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