GUI의 라이프 게임을 만들어 보았다 【Python】

라이프 게임(Conway's Game of Life)은, Conway씨가 1970년에 발안한 간이 생명 시뮬레이션 게임입니다. 매우 단순한 규칙이지만, 거기에서 파생된 난문에 수많은 수학자들이 포로가 되었다고 한다. 이번에는 그 라이프 게임을 Python으로 구현해 보았습니다.

몇 번 달여지는지는 모르겠지만, GUI화해 취급하기 쉽게 해 보았으므로, 흥미가 있으면 꼭 만져 보세요.

사용하고 있는 라이브러리는 numpy와 wxPython만.

구현 환경



MacOS 10.15 Catalina
파이썬 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 버튼)의 갱신 속도.

물론 셀을 클릭하면 생사를 반전 할 수 있습니다. 시험에 글라이더를 생성해 보면,

클릭하면서의 드래그에는 귀찮기 때문에 대응하고 있지 않다 (여력이 있으면 언젠가 실장한다...지도).

해설



거친 해설은 내 기사에서 가고 있으므로 꼭 한번 읽어보세요.
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()



Galaxy 이외에도 몇 가지 시험으로 준비하고 있습니다. 또한/objects 디렉토리에 텍스트 파일을 추가하기 만하면 쉽게로드 할 수 있습니다.

좋은 웹페이지 즐겨찾기