Visual Basic 中学校 投稿プログラム
VB6対応

 

Visual Basic 中学校 > 投稿プログラム > ライフゲームMINI >

ライフゲームMINI 取扱説明書 

投稿者:げるげるさん

ライフゲームとは

ライフゲーム(LifeGame)とは、イギリスの数学者Conwayによって1970年に考案されたシミュレータです。非常に簡単なルールで生物(ライフ)の誕生や淘汰などを見る事が出来ます。セルラーオートマトンの代表的なものの一つで、カオス(予測不能な現象)や人工生命などの分野で導入部分の教材に用いられたりしています。

※セルラーオートマトン:格子状のセル(細胞のような単位)上で行われる計算モデル。

碁盤のマスがセルで、マスの中に碁石(ライフ)があります。あるルールで碁石を置いたり取り除いたりするだけです。後述の単純なルールのみでフィールド上に花が咲き、池が出来、鳥が飛んだりします。この不思議さがライフゲームの魅力です。

 

遊び方

ランダムに配置し万華鏡のように眺めるだけでもいいですし、自分でライフを配置し、新しいパターンを生み出したりして楽しんでも良いです。また、後述のルールを変えて新しい世界を作っても良いです。どのような使い方をしても人それぞれ楽しめますし、その手軽さゆえ愛好家もいまだ数多くいます。ぜひ一度ライフゲームの世界に触れてみてください。

 

遊び方の例

ランダム配置

0.LGMINIを実行。
1.rキーを押してライフを配置。
2.Spaceキーを押して世代交代させる。
3.見てるだけ
4.次のライフを配置したい場合は、nキーを押す。
5.飽きたら右上のXボタンか、xキーを押して終了。

自分で配置

0.LGMINIを実行。
1.+キーを押して適当な大きさに変更(cキーでセンタリング)
2.nキーでマップのクリア
3.マウス左ボタンでライフを配置
4.Spaceキーを押して世代交代させる。
5.見てるだけ

ルールを変える

0.設定ファイル「SETUP.ini」を開く(メモ帳で十分です)
1.「Keep」の値を「2,6」と変更
2.「Create」の値を「3,6」と変更
3.「Rnd」の値を「20」と変更
4.ランダム配置をする。
5.実行

 

 

ルール

ライフは与えられたルールで、「維持」「誕生」「死亡」を繰り返します。世代を繰り返す毎に様々なパターンが生み出され、また消滅していきます。

あるマスについて周囲8マス(上下左右、斜め)のライフ数を数える。

つまりこのルールは、過疎状態や過密状態では生命は存在できず適当な密度でのみ繁栄していく、という群生物の簡単なモデルとなっています。

 

パターン

適当に配置し世代を進めて行くと、ある決まった形(パターン)のものが出てきます。特に有名なものには名前が付いているものがあります。(※一部を最下に記しておきます)

固定型

形の変わらないもの。周りにライフが無い限りずっとその形を維持し続けます。

例:ブロック、池、船

ブロック イーター
□□
□□
■■□□
■□■□
■□■■
□□■■

※イーター:グライダーの消去に使うのでEater(食べる人)と呼ばれる)

 

振動型

一定の周期で点滅しているもの。1世代毎、数世代毎に元の形に戻ります。

例:ブリンカー(信号機)、時計

ブリンカー
■□■
■□■
■□■

 

移動型

形を保ちながら移動し続けます。

例:グライダー、宇宙船

グライダー
■□■
□□□
□■■

 

繁殖型

様々なパターンを生み出しながら増殖していきます。

例:グライダーガン、汽車ポッポ

 

長寿型

繁殖型より多くの増殖をするもの。メトセラと呼ばれています。

例:ドングリ、ダイハード



 

ペントミノ
■□■
■□□
□□■

※ペントミノ:1000世代以上経った後に安定する
 

 

操作方法

Spaceキー ライフゲームの自動進行、停止
右クリック ライフゲームの自動進行、停止
左クリック マップ上にライフを配置、消去
a 一世代だけ進行(A Generation)
r 新しくライフを配置する(Random)
n マップのクリア(New)
c センタリング(Center)
+ 拡大(最大20倍まで)
- 縮小(等倍まで)
f 更新速度UP(Fast)
s 更新速度DOWN(Slow)
x 終了

 

詳細

ファイルの読み込みと保存

起動時に自動で同フォルダ内の「MAP.bmp」を読み込みます。(※ドロップした場合はそのファイル)。終了時は自動でマップを「buMAP.bmp」に保存します。(※ドロップ時は「bu」+ファイル名で保存)次回起動時に自動的に「buMAP.bmp」を読み込みます。

※ビットマップは必ず同フォルダ内に用意してください

自分でマップを用意

1.ペイントツールを使って幅32の倍数、深度1のBMPを作成、保存。

2.保存したBMPファイルをドロップ。

※ペイントツールは付属でOSについていると思います。ない場合はフリーソフトなども沢山ありますのでそちらを利用してください。

画像ファイルの注意点

読み込めるマップはモノクロ(深度1)で、かつ横幅が32の倍数のサイズのものに限ります。詳しくはファイルのプロパティ>ファイルの概要、を見てください。サイズを変えたい場合、新しいサイズのBMPを用意して「MAP.bmp」として上書き保存してください。

※もしくは適当な名前で保存し、ドラッグすると実行できます。

詳細設定

設定ファイル「SETUP.ini」を操作することでいろいろな事が出来ます。詳しくは「prg説明.txt」を読んでください。

デバッグモード

処理速度を知りたい場合はコマンドライン「/debug」で計測時間が表示されます。

Calc マップの計算に掛かる時間(ms)
Disp マップの表示に掛かる時間(ms)
AvgCalc マップの計算に掛かる平均時間(ms)
AbgDisp マップの表示に掛かる平均時間(ms)
Total 実行からの合計時間(ms)
Gene 世代数

※ファイル名を指定して実行で、「LGMINI.exe /debug」で実行します

アンインストール

レジストリには書き込みをしていません。フォルダをそのまま削除してください。

実行速度

サイズが大きくなるほど遅くなります。あまり遅い場合は小さいサイズで実行してください。設定ファイルのWait値が大きい場合は小さい数字に変えて下さい。

著作権、免責事項

著作権は持ちません。改造、解析なども自由に行ってください。なお、本プログラムによる一切の責任は持ちません。

その他コメント

このプログラムはライフゲームを題材にしたVBの高速化を対象にしたものです。自身のマシンでは計算に40ms程、描写に10〜20ms程掛かっています。理想は1世代10ms(毎秒100世代)での実行速度が欲しい所です。