Conway's Game of Life 시뮬레이터. F#으로 작성하고 Fable로 JavaScript로 컴파일하여 브라우저에서 실행.
- 클릭으로 셀 토글 (살아있음/죽음)
- 시뮬레이션 시작/정지/스텝
- 속도 조절 (1-20 gen/s)
- 프리셋 패턴 (글라이더, 펄서, LWSS 등 8종)
- 랜덤 그리드 생성
- RLE 형식 패턴 붙여넣기
- 키보드 단축키
| 키 | 기능 |
|---|---|
| Space | 재생/일시정지 |
| S | 한 스텝 진행 |
| R | 랜덤 그리드 |
| C | 클리어 |
npm install
npm run dev- F# + Fable — F# 코드를 JavaScript로 컴파일
- Vite — 빠른 개발 서버 및 번들링
- Canvas — HTML5 Canvas로 그리드 렌더링
- Expecto — F# 테스트 프레임워크
src/
├── Types.fs # 도메인 타입 (Model, Msg, Position, Grid)
├── GameEngine.fs # 게임 로직 (Conway 규칙, 토러스 래핑)
├── TestPatterns.fs # 패턴 라이브러리 (글라이더, 펄서 등)
├── RleParser.fs # RLE 형식 파서
└── App.fs # 엔트리 포인트, 렌더링, 이벤트 핸들링
tests/
└── GameEngine.Tests.fs # 게임 엔진 단위 테스트
Conway's Game of Life (B3/S23):
- 탄생 (B3): 죽은 셀에 이웃 3개 → 살아남
- 생존 (S2/S3): 살아있는 셀에 이웃 2-3개 → 생존
- 사망: 그 외 → 사망 (과밀 또는 고립)
토러스 경계: 가장자리가 반대편과 연결되어 무한 그리드처럼 동작.
dotnet test tests/LifeGame.Tests.fsprojMIT