ライフゲーム(3)

ライフゲームのルールを読み込めるようにした(DL)。
boost::Qiかboost::Lexが使える気がしたが、良く分からないのでboost::tokenizerで分解してステートマシンでごり押しである。もっとクールに書きたい・・・。


まあ、好きなルールで実行できるようになったし、色も変えられるようになったし、画面端でループも可能になったのでひとまず完成。生命値の数は本当はいくらでも指定できるが、ちょっとずつ処理が重くなるし、どうせ見ても何の状態なのかがわからないので拡張する予定はない。


実行速度に関しては満足である。1ループでマップの画素数×10くらいの処理を行うが、1処理が1クロックくらいで計算が合う。2.4GHzのCPUでVGAのマップをウェイトなしで動かすと72SPSくらい出る。これ以上の速度を出すには、一気に計算できるアルゴリズムを見つけてくるか、マルチCPUに対応するか、GPUを併用するかしなくてはならない。面倒なので多分やらない。