プログラミング講座で、まずはライフゲームを取り上げることにしました。これならエクセルのセルをうまく使いながら、VBAでうまいこと制御することができます。また、ループやIF文などいくつか重要な構文も使用することができます。
ライフゲームとは1970年に数学者「ジョン・ホートン・コンウェイ」が作ったシミュレーションゲームです。ゲームとは言っても、そんなに遊べる類のものではないです。どちらかというと、生命の誕生、進化、淘汰などのプロセスを簡易的に再現した研究用のものって感じです。まぁ、歴史的にみても、1970年じゃあ、まともなゲームは期待できないですよね。おなじみの任天堂のファミコンが発売されたのが1983年です。もはや完全に超レトロゲームの扱いのタイトーの「スペースインベーダー」が発売されたのが1976年。かの有名なアタリ社の「Pong(ポン)」が発売されたのが1972年(棒2本と玉1個と点数だけのシンプルな作りw)。コンピュータゲームも黎明期中の黎明期って感じですよね。
だからこそ、VBAで何か作ってみるって課題としてはかなり良いと思います。見た目的にも動きがあって面白く、何しろルールが単純でハッキリしていて作りやすいです。
碁盤のような格子の上で行います。エクセルのセルのサイズを調整すれば、簡単に作れますよね。で、格子の1つはセルと呼びます。偶然にエクセルのセルと同じですw
次に、それぞれのセルは「生」の状態と「死」の状態の2つに分かれます。これは、「塗りつぶした」状態と「塗りつぶしていない」状態で表現しましょう。
最後に世代という概念があり、次の世代にに移るごとに隣接する8セルの状態を元に「生」と「死」の状態が変化します。状態の変化の法則は「誕生」「生存」「過疎」「過密」の4つがあり、下に詳しく説明します。
「死」のセルに隣接する「生」のセルがちょうど3つあれば、生命が誕生し、次の世代では「生」となる。
「生」のセル隣接する「生」のセルが2つか3つならば、生命は生存し、次の世代でも「生」となる。
「生」のセルに隣接する「生」のセルが1つ以下ならば、過疎により次の世代では「死」となる。
「生」のセルに隣接する「生」のセルが4つ以上ならば、過密により次の世代では「死」となる。
ルールはたったのこれだけです。これだと簡単にプログラミングできそうですよね。
こんな簡単なルールなんですが、初めの「生」の配置によっては面白いパターンができあがるみたいです。とりあえずは「ペンタデカスロン」という名前の有名なパターンを掲載しておきます。
他にも沢山のパターンがあるようなので、興味のある方はググってみてくださいね。そして、ライフゲームが完成した際には、ぜひいろいろ試してみてください。では、次回は実際にプログラムを書いてみましょう。