Skip to content

ohama/GameOfLife

Repository files navigation

Game of Life

Conway's Game of Life 시뮬레이터. F#으로 작성하고 Fable로 JavaScript로 컴파일하여 브라우저에서 실행.

Live Demo

기능

  • 클릭으로 셀 토글 (살아있음/죽음)
  • 시뮬레이션 시작/정지/스텝
  • 속도 조절 (1-20 gen/s)
  • 프리셋 패턴 (글라이더, 펄서, LWSS 등 8종)
  • 랜덤 그리드 생성
  • RLE 형식 패턴 붙여넣기
  • 키보드 단축키

키보드 단축키

기능
Space 재생/일시정지
S 한 스텝 진행
R 랜덤 그리드
C 클리어

실행

npm install
npm run dev

http://localhost:5173 접속.

기술 스택

  • 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.fsproj

라이선스

MIT

About

Game of life implemented F#

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors