LoginSignup
4
5

More than 3 years have passed since last update.

GUIのライフゲームを作ってみた【Python】

Last updated at Posted at 2019-10-27

ライフゲーム(Conway's Game of Life)は,Conwayさんが1970年に発案した簡易生命シミュレーションゲームです.とても単純なルールではあるものの,そこから派生した難問に数多くの数学者たちが虜になったそう.今回はそのライフゲームをPythonで実装してみました.

何番煎じになるかはわかりませんが,GUI化して扱いやすくしてみたので,興味があればぜひ触ってみてください.
img1.png
使っているライブラリはnumpywxPythonのみ.

実装環境

MacOS 10.15 Catalina
Python 3.7.4
wxPython 4.0.6
numpy 1.16.4

ちなみに開発はPyCharmで行っている.

実行

モットーは「main(関数)内はシンプルに」ということで,最低以下のコードがあれば実行可能.

from lifegame import GUILifeGame

game = GUILifeGame()
game.run()

これで,50×50のライフゲームが起動する (セルは全部死んだ状態).

from lifegame import GUILifeGame

game = GUILifeGame(f_shape=(10, 10), time_step=100)
game.run(init_rand=True, rate=0.2)

のように引数を指定すると,10×10のライフゲームが,初期状態「0.2の割合で生きているセル」で起動する.ちなみにtime_stepは,自動的に世代を進めるとき(Runボタン)の更新速度.

もちろん,セルをクリックすると生死を反転できる.試しにグライダーを生成してみると,
glider.gif
クリックしながらのドラッグには面倒なので対応していない (余力があればいつか実装する...かも).

解説

大まかな解説は僕の記事で行っているのでぜひ一読してみてください.
GUIのライフゲームを作ってみた【Python】| HIRO LAB BLOG

コード 

コードはGithubにあげているので,ぜひ!
PyPIには登録してないので(というかするほど大層なものでもないので),pip installはできません.

HiroshiARAKI/lifegame: Simple Conway's Game of Life Simulator on Python!!

以上,Qiita初投稿でした m(_ _)m

追記 (2019.10.28) - オブジェクトのロード,保存

早くも追記しますが,少しコードを修正し,機能を増やしました!

from lifegame import GUILifeGame


if __name__ == '__main__':

    # Create Conway's Game of Life GUI Frame
    game = GUILifeGame(f_shape=(50, 50), time_step=100)

    # Put Galaxy on center
    game.set_object('galaxy')

    # Start!!
    game.run()

img2.png

Galaxy以外にもいくつかお試しで用意しています.また自分で/objectsディレクトリにテキストファイルを追加するだけで,簡単にロードできます.

4
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5