Life-gameを作ってみました
ライフゲームでは、画面上のマス目を二次元配列として管理し、それぞれのマスに「生存」か「死亡」の状態を持たせています。プログラムは、すべてのマスについて周囲8マスの状態を確認し、生きているマスが何個あるかを数えます。その数に応じて、次の世代でそのマスが生きるか死ぬかを決定します。このとき、現在の盤面を直接書き換えるのではなく、次の状態を別の配列に保存します。途中で現在の盤面を書き換えると、先に更新されたマスの情報が後の計算に影響してしまうためです。すべてのマスの計算が終わったあとで、次世代の配列を現在の盤面にまとめて反映します。その後、更新された盤面を画面に描画し、一定時間ごとに同じ処理を繰り返します。つまり、ライフゲームは「周囲の状態を調べる」「次の状態を計算する」「全体を一斉に更新する」「画面に表示する」という処理を連続して行っているシミュレーションです。