Visual Basic 中学校 投稿プログラム |
ライフゲームMINI
投稿者:げるげるさん
ライフゲームMINIはいわゆる「ライフゲーム」をVB6で実装したものです。ライフゲームの説明や操作方法はいつも通りV太君、B子ちゃん、博士の3人に説明してもらうことにしましょう。
技術的にはAPIを使ったビットマップの制御が見ものです。ビットマップはライフゲームの特質上モノクロビットマップを使用していますが、拡大縮小、クリックによるドットの配置に対応しています。
げるげるさん投稿ありがとうございます。
投稿者であるげるげるさんは知的所有権を放棄していらっしゃいますので自由にプログラムを修正・改造 して大いに楽しみましょう。ただし節度のある態度は心がけてください。
ダウンロード
LGMINI.lzh(15.1KB)
VB6で作成されたソースコード。取扱説明書であるreadme.txtおよび、プログラムの概略を記したprg説明.txtが同梱されています。 詳しい説明はこちらをご覧ください:ライフゲームMINI 取扱説明書 ファイルはLha形式(拡張子 lzh)で圧縮されています。 |
V太:博士 ー!何ですかこれは?!
■画像1:開始直後
博士: ほほ。VBで作ったライフゲームじゃよ。とりあえず、スペースキーを押すと処理が開始するぞ。
どれどれ・・・・。むむー。なんか白い点がごちゃごちゃ動いているようですが一体これは…?カビ?
■画像2:スペースキーを押してしばらく放置するとこうなる
「+」キーを押すと拡大できるから、白い点のところを拡大してみるといい。処理速度が遅いようならスペースキーを押せば一時停止、再開ができるから調節するのじゃ。
どらどら・・・・。 (「+」キーをゆっくりと連打)
■画像3:「+」キーを使って拡大したところ
むむー。確かに拡大されました…けど、なんですかこれ?
この白い点を「生きているセル」と表現するのじゃ。黒い点は「死んでいるセル」じゃ。ポイントは生きているセルの周りにある8個のセルじゃな。8個のセルのうち生きている3つにセルがあれば、そのセルは生き延びる。そうでなければ、そのセルは死んでしまう。しかし、死んでいるセルの周りに2つか3つの生きているセルがあれば、死んでいるセルから新しい生きているセルが誕生する。
これを繰り返すのがライフゲームじゃ。
※ルールを変更することも可能です。詳しくは取扱説明書を参照して下さい。
?????????????
B子:表にまとめるとこんな感じかしら?
周辺8マスの生きているセルの数 | 生きているセルは | 死んでいるセルは |
2個 | 生きのびる | 何もおきない |
3個 | 生きのびる | 新しく生まれる |
それ以外 | 死ぬ | 何もおきない |
■表1:ライフゲームのルール
試しにやってみようかの。スペースキーを押して一旦実行を終了しよう。それから「n」ボタンを押して、画面をクリアするのじゃ。そしたらマウスでクリックして次のように生きているセルを配置してみるのじゃ。
■画像4
実際の画像には縦と横の線は表示されないぞ。ここではV太君にもわかりやすいように説明しているのじゃ。
はい。配置しました。
さて、問題じゃ。次に死ぬセルを赤く、新しく生まれるセルと青く塗ってみよ。
え、えーっと…。回りに2つか3つ生きているセルがないやつは死ぬから…、あれ、ほとんど死んじゃいますよ?!
その代わり、回りに3個生きているセルがあると新しいセルが生まれるから、こうなるかしら?
■画像5
おみごと!じゃから次の世代では赤い部分が消え去って次のような形になる。
■画像6
実際に「a」キーを一回だけ押すとこのように変化するのが確認できるのじゃ。
同じようにやっていくと次のように変化していくぞ。
■画像7 | ■画像8 | ■画像9 | ■画像10 |
どんどん「a」キーを押して変化させていこう。
ふーん。
これを繰り返すとなんと、元の形に戻ってしまうのじゃ。
へー。
スペースキーを押すと次々に変化していく様子がわかるぞ。
これが「ライフゲーム」??
その通り。今紹介したのはペンタデカソロンと呼ばれるパターンじゃ。他にもいろいろな面白いパターンが発見されておる。もちろんパターンによって変化の仕方は異なるし、セルが全滅してしまうパターンもある。
ライフゲームの詳しい説明はげるげるさんに書いてもらったのでこちらを見るとええじゃろう。「取扱説明書」となっておるがライフゲームやその楽しみ方などに関してもいろいろ説明してあるから、是非見ておいた方がよいのぉ。
でも博士ー。これって何なんですか?これでスクリーンセーバーでも作れって言うんですか?
それも面白いかもしれんがの。本来は純粋に数学的なものなのじゃ。興味がある人は以下のリンクを参照するとええじゃろう。
最後に操作説明も載せておくぞ。
Spaceキー | ライフゲームの自動進行、停止 |
右クリック | ライフゲームの自動進行、停止 |
左クリック | マップ上にライフを配置、消去 |
a | 一世代だけ進行(A Generation) |
r | 新しくランダムにライフを配置する(Random) |
n | マップのクリア(New) |
c | センタリング(Center) |
+ | 拡大(最大20倍まで) |
- | 縮小(等倍まで) |
f | 更新速度アップ(Fast) |
s | 更新速度ダウン(Slow) |
x | 終了 |
■表2:操作方法
投稿していただいた げるげるさん、詳しい説明まで書いてくださって本当にありがとうございます!今後もみなさんからのプログラムの投稿をお待ちしています。
…V太は気が付いていないみたいだけど、今回のプログラムは技術的にも見るべきものがいろいろあるわね。折角ソースコード付きなんだからダウンロードした人はよく見てみると良いと思うわ。