コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
Godot ◆ULYW1MrfcSYD
2018/12/18 0:58
ライフゲーム作ってみました。
公開キー DBXVV8E

コメント

アバター
Godot 2018/12/18 12:04 ◆ULYW1MrfcSYD
セルが6角形のライフゲームです。
ゲームといっても各種設定を変えて
眺めるだけなので
変に期待してしまった人には
申し訳ないです。

設定メニューはダイアログだけで
作ってみました。
ダイアログのちらつき軽減のために
ダイアログを表示しているときは
背景に同様な画面をグラフィク表示
しています。
手抜きなら GCLS #WHITE でも
良いのですが
以前作ったサブルーチンがあるので流用。

上画面のライフゲーム部分は
グラフィクではなく
コンソール出力です。
FONTDEF で6角形っぽい
パターンを作っています。

何かの参考になれば。
アバター
くらげ 2018/12/18 17:59 ◆wwGQuv.PrBB8
振動子が可愛い(…)
アバター
Godot 2018/12/18 22:40 ◆ULYW1MrfcSYD
パラメーターいじって試してると
割と面白い振動子や
固定物体が出てきたり
アバター
KNTK 2018/12/19 23:05 ◆.O1reuuyjCCS
ライフゲームってなんですか。
アバター
Godot 2018/12/20 12:43 ◆ULYW1MrfcSYD
多分「ライフゲーム」で検索するとそれなりに解りやすい
記事や動画が見つかると思いますが
取りあえず説明してみます。

ライフゲームは生命の生死を
簡単なルールで定義し
生命の「生存」「繁栄」「衰退」の様を
生暖かく見守るものです。

一般的には四角升目の
碁盤状の盤面を用います。

升目一つをセルと呼び
セルには一つの生命が入ります。

ここでは
生命が入っているセルを生セル
生命が入っていないセルを
死セル(空セル)と呼びます。

生命はそのセルの周りの環境によって
次世代生き残るか、死亡するか
新たに誕生するかが決まります。

生命の生死は
以下のルールによって決まります。

対象のセルを中心に
周囲8つのセルの状況を確認します。

□□□
□○□
□□□

確認対象のセル[●:生][○:死]
周囲の他のセル[■:生][□:死]

環境状態は4つあります。
「過疎」「維持」「過密」「誕生」

過疎
 生セルの周囲に他の生セルが
 存在しない、または1だけ存在する場合
 そのセルは次世代は生き残れず死亡します。

  □□□  ■□□
  □●□  □●□
  □□□  □□□ 

維持
 生セルの周囲に他の生セルが
 2つまたは3つ存在する場合
 そのセルは次世代も生き残ります。

  □■■  ■□□
  □●□  □●■
  □□□  □■□

過密
 生セルの周囲に他の生セルが
 4〜8つ存在する場合
 そのセルは次世代は生き残れず死亡します。

  ■■■  ■■■  ■■■
  ■●□  ■●■  ■●■
  □□□  □□□  ■□□

  ■■■  ■■■
  ■●■  ■●■
  ■■□  ■■■

誕生
 空セルの周囲に生セルが
 3つ存在する場合
 そのセルに新たに生命が誕生します。

周囲の他セルについてはそれぞれ
そのセルを対象としで上記の判定を行い
生死が決定されます。

上記ルールに従って世代を進め
その変化を観察します。

以上「ライフゲーム」について
こんな感じの説明になりましたが
如何でしょうか?

上記、間違いに気づいた方は
指摘ねがいます。
アバター
KNTK 2018/12/20 15:41 ◆.O1reuuyjCCS
なるほど、シュミレーションみたいなものですね。
ありがとうございます。
アバター
はる 2018/12/20 18:55 ◆75Vh4SY8TdKS
シミュレーションでは?
アバター
くらげ 2018/12/20 19:33 ◆wwGQuv.PrBB8
(そうですね)


ライフゲームに於いては、考えられる全ての計算が可能であるという事が証明されています。(実行速度はともかく)

なので、ライフゲーム上でライフゲームを実行することも出来るんです。(実際にある)

おもしろいなあ…………
アバター
Godot 2018/12/20 22:58 ◆ULYW1MrfcSYD
自分もRPGが台頭してくる前
SLGが全盛だった頃は
言い易さもあり(いまでもたまに(^^;)
「シュミレーション」と言っていましたが
ただしくは「シミュレーション」
らしいです。
大分後で知ったw

それは置いておいて
ざっくり言うと「ライフゲーム」は
生命の繁栄、衰退のシミュレーション
と言うことになります。

生死のルールを変えたり
複数の生命体を登場させたりと
さまざまなバリエーションがあります。
アバター
ツララ 2018/12/21 1:17 ◆ArUdBYOYME1V
3 4/2 6のルールでやると面白い。
ルールの変更操作にほとんどストレス感じないUIデザインだから
色々試すのが純粋に楽しいですね。
けど方形セルより参照するセル数が少ないからなのか、固有パターンを持つオブジェクト成立しにくい?
グライダーみたいな移動するパターンの未だ発見できず・・・
アバター
Godot 2018/12/21 4:51 ◆ULYW1MrfcSYD
Webで6角のライフゲームの情報を
読みあさっていたときは
「グライダーの様な移動体」という
記述があったと記憶。
維持/誕生の一般的な値があるか
探していたのでそこは流し読み。
(結果なかったので、自由に試せるUIに)
具体的な内容とか形、
どのサイトだったかは失念。
試してればその内出現するかな?
と思ったど、当方も未だ確認できず。

もしかしたら盤面の
上下左右の循環をやめて
もっと広くすれば出現しやすいのかな?
とも思いますが。
コンソールだとこれ以上
大きくできないし…。
アバター
ツララ 2018/12/21 10:25 ◆ArUdBYOYME1V
データ的にはメモリの許す限り盤面の広さは何とかなるでしょうから
メインの表示的にはコンソールを使って
スプライトのサブ画面で画面外の部分を半透明表示とか?
一つのドットを2×2で表せば一応HEXにできますし。

周囲8マス判定の方形パターンだと斜めに隣接部分は左右上下とは厳密には直線距離が違うから
サーチ範囲を広くする方法がそれっぽい感じしますね。
アバター
Godot 2018/12/21 19:59 ◆ULYW1MrfcSYD
頑張ればどうとでもなりそうですが
そもそもダイアログで作った
ライフゲームの改造を初めて
収集が付かなくなりだしたので
途中で見つけたヘックス版、
これコンソール画面でできるよね。
ちょっと作ってみようか?
と息抜きに始めたものなので。
このまま進むと周囲だけでなく
外周もみて重み付けしての世界に
突入しそうだったので
適当に切り上げた次第です。
なのであまり凝るつもりは(>_<)
アバター
はる 2018/12/21 20:00 ◆75Vh4SY8TdKS
これコンソールなんですか?
アバター
Godot 2018/12/21 22:25 ◆ULYW1MrfcSYD
そうですよ。
ライフゲームの六角のセルは
FONTDEFで定義した文字です。
ソースを見てみてください。
アバター
はる 2018/12/21 22:26 ◆75Vh4SY8TdKS
まだダウンロードしていないので後でダウンロードして確認してみますね。
アバター
Godot 2018/12/21 23:07 ◆ULYW1MrfcSYD
グラフィックは使っていますが
下画面のダイアログの背景として
使っています。
連続でダイアログを出したり
消したりする際なるべく
ちらつかないようにダイアログと
同じ様な画像を背景として置いています。
だいぶちらつきが軽減されているかと。
アバター
はる 2018/12/21 23:16 ◆75Vh4SY8TdKS
自分の作品でもそれと同じようなことをやっているものがあります。
アバター
ツララ 2018/12/22 16:50 ◆ArUdBYOYME1V
ライフゲームって単純そうに見えて奥が深いですし、凝り始めると底なしですからね・・・

私もランダム生成した地形に植物繁茂させるプログラム作ろうとして
2次元ライフゲームに時間軸で次元増やしてみたらどうなるかな?
ってやってみたんですけど
生存/誕生のルールの組み合わせパターンがカオスになりすぎて
生存セルの総数でルールが自動で可変するみたいなので手打ちにしたことありますあります。
アバター
Godot 2018/12/22 19:39 ◆ULYW1MrfcSYD
周囲だけでなく
その外周を含んだり
重みづけをしたり
即死ではなく、数世代後に死ぬように
したりと
どんどん沼にはまり込む感じで。

三角セルは無いと思ったら
隣接12セルを接し方によって
3グループに分けて重みづけして
という論文がみつかったり
あまり掘り下げると帰って来れず
迷子になりそうw

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -