@kjunine/ascii-aquarium
v1.0.2
Published
Interactive ASCII art aquarium simulator for the terminal
Downloads
330
Maintainers
Readme
ASCII Aquarium
터미널에서 실행되는 인터랙티브 ASCII 아트 수족관 시뮬레이터입니다.
.--.
___/ \___
/ \__ ><> ><>
| o ___| )
\_________/ \__/ ><>주요 기능
- Boids 군집 알고리즘 — 소형/중형 물고기가 자연스러운 떼 이동을 합니다
- 다양한 해양 생물 — 상어, 고래, 거북이, 해파리가 수족관을 횡단합니다
- 주야간 사이클 — 시간에 따라 바다 색상과 물고기 속도가 변합니다
- 파티클 시스템 — 거품이 올라가고, 먹이를 떨어뜨릴 수 있습니다
- 장식물 — 성, 산호, 해초가 바닥을 장식합니다
- 세션 저장/복원 — 종료 시 상태가 자동 저장되어 다음 실행 시 복원됩니다
- 실시간 물고기 추가/제거 — 실행 중
+/-키로 물고기 수를 조절합니다
요구 사항
- Node.js >= 22.0.0
- 트루컬러(24bit) 지원 터미널 권장
설치
npm install실행
npm startCLI 옵션
| 옵션 | 설명 | 기본값 |
|------|------|--------|
| --fish-count=N | 물고기 수 (1-30) | 10 |
| --speed=N | 시뮬레이션 배속 (0.1-5.0) | 1.0 |
| --theme=THEME | 테마: default, day, night | default |
| --no-predators | 상어 등 포식자 비활성화 | false |
| -h, --help | 도움말 표시 | - |
# 예시
npm start -- --fish-count=20 --speed=1.5 --theme=night --no-predators키보드 조작
| 키 | 동작 |
|----|------|
| q | 종료 (상태 자동 저장) |
| p | 일시정지 / 재개 |
| r | 화면 강제 다시 그리기 |
| d | 디버그 정보 (FPS 등) 토글 |
| h | 도움말 오버레이 토글 |
| f | 먹이 떨어뜨리기 |
| + | 물고기 추가 (최대 30) |
| - | 물고기 제거 (최소 1) |
개발
# 파일 변경 감지 모드로 실행
npm run dev
# 테스트 실행
npm test
# 테스트 감시 모드
npm run test:watch프로젝트 구조
src/
├── index.ts # 앱 진입점
├── core/ # 터미널, 화면, 게임 루프, 입력, 색상
├── entities/ # 물고기, 수면, 성, 산호, 해초
├── creatures/ # 상어, 고래, 거북이, 해파리
├── boids/ # Boids 군집 알고리즘
├── particles/ # 거품, 먹이 파티클 시스템
├── systems/ # 주야간 앰비언스 시스템
├── config/ # CLI 파서, 세션 저장/복원
└── ui/ # 토스트 메시지, 오버레이기술 스택
- TypeScript + tsx (런타임)
- terminal-kit (터미널 렌더링)
- Vitest (테스트)
