ライフゲームができました。最初に作ったもので遊んでみると意外に面白いので、色々とネット検索してライフゲームについて調べたり、プリセットパターンを選べるように機能追加したりして、ハマってしまいました。能力の高さを実感していただけると思います。発表したのが始まりです。繰り返す生命体の集団の変化(世代変化)を画面上で再現して、眺めて楽しみます。どちらかの状態になります。<誕生>周りに生きている細胞が3個あれば、次の世代でその場所に新たな細胞が生まれます。<生存>生きている細胞の周りに生きている細胞が2個あるいは3個あれは、その細胞は次の世代でも生き残ります。<死滅>上以外の場合、細胞は次の世代で死にます。これを画面全てのピクセルについて計算して結果を表示すると、1世代進みます。世代が進むと複雑なパターンに変化してゆきます。ピクセル一個が極めて単純なルールに従うだけなのに、実際に動かしてみると予想もしない複雑なパターンが次々に現れるのが、ライフゲームの面白いところです。ライフゲームを知らなかった方や知っていた方も、以下のサイトにある動画を是非ご覧ください。使えば十分楽しめるスピードで実現できたのはチョット驚きです。実際に試すことができます。有名なパターンはプリセットパターンとして選択して使えるようにしています。ソースコードを公開しているので、プリセットパターンを追加したり、改造したり自由にお使いください。液晶全体をピクセル単位でグラフィックス描画するには非常に時間がかかります。一瞬でグラフィックス画面全体を更新・表示することは無理、という仕様になっています。画面全体のピクセルを扱うには行列の要素数が足らない仕様でもあります。ライフゲームは作れないと思っていました。ベンチマークの目的も含めて、面白そうなので作ってみました。独自拡張したビットマップ処理コマンドも使ってみました(これを使わないと無理です)。多くのライフゲームは十分に広い世界を用意していて、無限大の広さが前提になることが殆どです。ピクセルに限定された狭い世界でのライフゲームです。ピクセルの領域から外へ出ようとすると、通常のライフゲームとは異なる結果が起こり得ます。仕上げて、それ以降の最新バージョンで動作確認しています。バージョンアップしました。導入すれば、快適にライフゲームが楽しめます。テスト版で、バグフィックスとバージョンアップが頻繁に行われています。Ftune2より高速でスムーズな動きを楽しむには、オーバークロックツールの使用を勧めます。初期パターンは、手入力だけでなくプリセットした15個の初期パターンから選択可能になった電卓表示のの狭い世界でも、パターンが変化する様子は面白くて飽きません。ライフゲーム遊びが出来るとは、思いもしませんでした。・[EXIT]キーでゲーム終了し、その時の世代と最初からの実行時間を表示するプリセット初期パターン<パターン1>174世代目で安定状態になる。<パターン2>こんなに小さい5ピクセルから、大きく広がりながらグライダーを5機発射する。6機目のグライダーは途中で消滅。電卓の狭い世界では652世代目で安定状態になる。<パターン3>たまたま見つけた面白いパターン。大きく広がらないのに、安定状態になるまで517世代と長寿命なのが特徴。このように、十分な実用的な速度で実行できる(オーバークロック236MHz)。比べて、最近のバージョンでは機能追加しているにもかかわらず、ほぼ倍の速度を維持している!<パターン4>たまたま見つけたパターン。横に広がり218世代目で安定状態になる。<パターン5>たまたま見つけた面白いパターン。途中から、画面全体のピクセルで計算と描画を行い負荷が最大になるので、プログラムのスピード評価に使える。グライダーを6機発射し、そのうち2機は途中で消滅。飛び去るグライダーを別にすれば、495世代目で安定状態になる。<パターン6>たまたま見つけた寿命の長いパターン(658世代)。狭い画面よりも広がろうとするので、境界での特異現象あり。<パターン7>固定パターン(ブリンカー)の1つ。床屋さんのサインのようだ。<パターン8>グライダーが反射を続けて往復移動する様子が面白い。回転しながら斜めに移動してゆく。小さい宇宙船は壁に当たるとグライダーに変身する(画面端での特異ケース)。<パターン11>左右に往復運動するパターン(シャトル)。<パターン12>往復移動するパターン(シャトル)の1つ。壊れて消えそうで、消えずに往復運動するのが面白い。MITのゴスペラーが最初に見つけた無限増殖するパターン。グライダーが発射される。煙(スパイク)を残しながら移動する。<パターン15>移動するパターン。ゴミ(スパイク)を残さないのが面白い。▋ライフゲームに関するサイト実際に作ってみると興味が出てきたので、色々と調べてみました。作ったのが初めてでした。その動きの複雑さや面白さは、実際に動かしてみないと分からないものです。ルールは単純なのでプログラム自体はそれほど難しくなく、ポイントは処理速度と画面の広さです。処理速度と画面の広さはスグに限界にきてしまいますが、ライフゲームの面白さを知るには十分です。上で紹介した色々なサイト、特に「一押し」と紹介したサイトにある動画を見て、その奥深さ知りました。チューリングマシンについてちょっと調べてみると、コンピュータを作るための基本的な概念なんだと知りました。チューリングマシンでチューリングマシンを作ることができる、完全チューリングマシンがあるというのも驚きです。ライフゲームで完全チューリングマシンを作れる、つまりライフゲームでライフゲームが作れることも、上の一押しの動画で紹介されています。ライフサイエンスが進んでいなかった時代に既に考えていて、原理を証明していたことを知って、その先進性に驚きました。生命は最初は1個の受精卵から始まり、そこからヒトのような複雑な生命システムができあがるわけですが、それが単に4つの塩基の並び方だけで記録されていて、細胞の分裂と分化に伴ってヒトの生命体としての機能を実現するという事実に迫るために、コンピュータ上の複雑系の研究が進んでいるのも、興味深いところです。DNAに乗っている情報は、体の設計図だけでなく、タンパクや酵素の製造装置の設計図までも含んでいて、分子レベルでの全ての制御・調節機構を支配しています。生命を単に複製するのに必要な設計図を全てDNAに記録しているだけでなく、細胞分化に多様性を与えるための設計図まで含んでいる凄さも、ライフゲームで遊んでみて改めて実感します。ライフゲームを実際に作って遊んでみると、複雑なパターンや機能が発現できる初期の単純なセルパターンを探すと、それなりに出てくるのを経験すると、一見単純なものを階層化して組み立てることで、自己複製までできてしまうことに納得します。プログラム電卓で作るライフゲームは、最も単純なウィルスレベルにも及ばないかも知れませんが、想像力をかきたててくれるには十分ですね。===の部分で、大した量ではありません。初期パターンを描いたり、使いやすくしたり、操作説明を入れたりで増えてしまっています(^^;このプログラムでは1つだけ工夫しています。結構な量の配列計算を出来るだけ少なくするために、パターンの周りの最低限必要なビットマップ領域だけの配列計算をするようにしています。ビットマップ領域の拡大に伴ってフレキシブルに計算領域を拡大しているので、領域が広がるにつれて処理時間がかかるようになります。内蔵のエディタを使ってゼロから作ったプログラムなので、実はこうやってプログラムソースを眺めるのは初めてです。上位互換で、なかなか使いやすくなっていて、特に以下のようにソースを眺めなくてもプログラムが書けてしまいます。構造化言語なのでブロック構造の分かりやすいプログラムが作れること、そしてエディタが使いやすいことは大きいと思います。内蔵エディタの使いやすさをアピールする良い機会かも知れません。同等の文字列検索機能だけでなく、このエディタには、変数や配列/行列の参照・編集機能があって、なかなか使えます。コマンドで強制終了させたり、ステップデバッグが可能で、コードや変数チェック後、動作復帰するなど、便利なデバッグ機能も搭載していて、とても便利です。型指定、タイマーに関するもので、高速化を目指しました。書かれているので、そこで確認してください。ここでやっていることは極めて単純で、プリセットパターンを配列データとして作り、それをビットマップとして表示し、矢印キーを押すと別のパターンで同じことを行う...これを15パターン分似たような記述を繰り返しているだけで、その分長くなっています。エディタを使い、コピー&ペーストを使ったので、実際の入力はかなり省略でき、気がついたら長くなっていました。独自拡張機能を赤文字で示しておきます。1=====応援クリックをお願いします。管理人様、こんにちは!>修正しました。ダウンロードできるようにしました。公開されたバージョンの一覧を作ってみました。>http://egadget2.web.fc2.com/archives/fx-9860GII/Addin/CBasic.html>覚えている範囲で、互換性を切るような大きめの仕様変更ごとに改行してみました。>こうしてみると、ここまで来たものだ...とチョット感慨にふけってしまいます。最初の0.10から互換性アップと独自拡張での変わり具合を見ていくと、ここまでバージョンアップ出来たのも、管理人様やガノー様の貴重なアドバイスのおかげですね。公開されたバージョンの一覧を作ってみました。http://egadget2.web.fc2.com/archives/fx-9860GII/Addin/CBasic.html覚えている範囲で、互換性を切るような大きめの仕様変更ごとに改行してみました。してみると、ここまで来たものだ...とチョット感慨にふけってしまいます。ver.0.74のダウンロードのリンク先がHIT&BLOWになってますです...(^^;修正しました。ダウンロードできるようにしました。2013プログラム電卓は、プログラムを作って、使ってナンボ!実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています。Basicが面白いと感じる1ユーザーです。