README.md

Download
markdown 160 lines 3.4 KB
  1# Snake Game Examples
  2
  3터미널 기반 λ±€ κ²Œμž„ ν”„λ‘œμ νŠΈ 예제 νŒŒμΌλ“€μž…λ‹ˆλ‹€.
  4
  5## 파일 ꡬ성
  6
  7### 1. `ansi_demo.c`
  8ANSI escape codes μ‹œμ—° ν”„λ‘œκ·Έλž¨
  9- μ»€μ„œ 이동, 색상, λ°•μŠ€ 그리기 등을 λ³΄μ—¬μ€λ‹ˆλ‹€.
 10
 11**컴파일 및 μ‹€ν–‰:**
 12```bash
 13gcc -o ansi_demo ansi_demo.c
 14./ansi_demo
 15```
 16
 17### 2. `input_demo.c`
 18비동기 ν‚€λ³΄λ“œ μž…λ ₯ μ‹œμ—° ν”„λ‘œκ·Έλž¨
 19- termiosλ₯Ό μ‚¬μš©ν•œ non-blocking μž…λ ₯ 처리
 20- λ°©ν–₯킀와 WASD ν‚€ 지원
 21
 22**컴파일 및 μ‹€ν–‰:**
 23```bash
 24gcc -o input_demo input_demo.c
 25./input_demo
 26```
 27
 28**μ‘°μž‘λ²•:**
 29- λ°©ν–₯ν‚€ λ˜λŠ” WASD: 이동
 30- 슀페이슀: 점프
 31- Q: μ’…λ£Œ
 32
 33### 3. `snake_types.h`
 34λ±€ κ²Œμž„ 데이터 ꡬ쑰 μ •μ˜
 35- κ²Œμž„μ— ν•„μš”ν•œ λͺ¨λ“  νƒ€μž…κ³Ό μƒμˆ˜ μ •μ˜
 36- λ‹€λ₯Έ νŒŒμΌμ—μ„œ includeν•˜μ—¬ μ‚¬μš©
 37
 38### 4. `snake.c`
 39λ±€ κ²Œμž„ 핡심 둜직 κ΅¬ν˜„
 40- λ±€ 생성/ν•΄μ œ, 이동, 좩돌 검사 λ“±
 41- `snake_types.h`λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“ˆν˜• κ΅¬ν˜„
 42
 43**컴파일 (단독 μ‹€ν–‰ λΆˆκ°€):**
 44```bash
 45# λ‹€λ₯Έ 파일과 ν•¨κ»˜ 링크해야 함
 46gcc -c snake.c -o snake.o
 47```
 48
 49### 5. `snake_game.c`
 50μ™„μ„±λœ λ±€ κ²Œμž„ (ANSI escape codes μ‚¬μš©)
 51- λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•˜λŠ” μ™„μ „ν•œ κ²Œμž„
 52- μ™ΈλΆ€ 라이브러리 ν•„μš” μ—†μŒ
 53
 54**컴파일 및 μ‹€ν–‰:**
 55```bash
 56gcc -o snake_game snake_game.c
 57./snake_game
 58```
 59
 60**μ‘°μž‘λ²•:**
 61- λ°©ν–₯ν‚€ λ˜λŠ” WASD: λ±€ 이동
 62- P: μΌμ‹œμ •μ§€
 63- Q: μ’…λ£Œ
 64- R: μž¬μ‹œμž‘ (κ²Œμž„ μ˜€λ²„ ν›„)
 65
 66**κΈ°λŠ₯:**
 67- 점수 μ‹œμŠ€ν…œ
 68- 속도 증가 (μŒμ‹ λ¨Ήμ„μˆ˜λ‘ 빨라짐)
 69- 졜고 점수 μ €μž₯ (`.snake_highscore` 파일)
 70- μΌμ‹œμ •μ§€
 71- 색상 ν‘œμ‹œ
 72
 73### 6. `snake_ncurses.c`
 74NCurses 라이브러리λ₯Ό μ‚¬μš©ν•œ ν–₯μƒλœ 버전
 75
 76**⚠️ 이 νŒŒμΌμ€ ncurses λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€!**
 77
 78**라이브러리 μ„€μΉ˜:**
 79```bash
 80# macOS
 81brew install ncurses
 82
 83# Ubuntu/Debian
 84sudo apt install libncurses5-dev
 85
 86# Fedora/RHEL
 87sudo dnf install ncurses-devel
 88```
 89
 90**컴파일 및 μ‹€ν–‰:**
 91```bash
 92# macOS
 93gcc -o snake_ncurses snake_ncurses.c -lncurses
 94
 95# Linux
 96gcc -o snake_ncurses snake_ncurses.c -lncurses
 97
 98# μ‹€ν–‰
 99./snake_ncurses
100```
101
102**μ‘°μž‘λ²•:**
103- λ°©ν–₯ν‚€ λ˜λŠ” WASD: λ±€ 이동
104- P: μΌμ‹œμ •μ§€
105- Q: μ’…λ£Œ
106- R: μž¬μ‹œμž‘ (κ²Œμž„ μ˜€λ²„ ν›„)
107
108**ncurses λ²„μ „μ˜ μž₯점:**
109- 더 κΉ”λ”ν•œ ν™”λ©΄ 처리
110- μžλ™ 버퍼링 및 κΉœλΉ‘μž„ λ°©μ§€
111- ν‘œμ€€ λ°•μŠ€ 문자 μ‚¬μš©
112- 더 λ‚˜μ€ 색상 관리
113
114## ν•™μŠ΅ μˆœμ„œ
115
1161. **`ansi_demo.c`** - ANSI escape codes 이해
1172. **`input_demo.c`** - 비동기 μž…λ ₯ 처리 이해
1183. **`snake_types.h`** - κ²Œμž„ 데이터 ꡬ쑰 νŒŒμ•…
1194. **`snake.c`** - κ²Œμž„ 둜직 κ΅¬ν˜„ ν•™μŠ΅
1205. **`snake_game.c`** - μ™„μ„±λœ κ²Œμž„ 뢄석
1216. **`snake_ncurses.c`** - ncurses 라이브러리 ν™œμš© (선택)
122
123## 개발 ν™˜κ²½
124
125- C11 ν‘œμ€€
126- POSIX ν˜Έν™˜ μ‹œμŠ€ν…œ (Linux, macOS, BSD)
127- 터미널: UTF-8 지원 ν•„μš”
128- 컴파일러: GCC λ˜λŠ” Clang
129
130## 참고 자료
131
132이 μ˜ˆμ œλŠ” λ‹€μŒ ν•™μŠ΅ 자료λ₯Ό 기반으둜 ν•©λ‹ˆλ‹€:
133- `/content/ko/C_Programming/11_Project_Snake_Game.md`
134
135## 문제 ν•΄κ²°
136
137### 문제: λ°•μŠ€ λ¬Έμžκ°€ κΉ¨μ Έ λ³΄μž„
138**ν•΄κ²°:** 터미널이 UTF-8을 μ§€μ›ν•˜λŠ”μ§€ 확인
139```bash
140echo $LANG
141# 좜λ ₯ 예: en_US.UTF-8 λ˜λŠ” ko_KR.UTF-8
142```
143
144### 문제: ν‚€ μž…λ ₯이 μž‘λ™ν•˜μ§€ μ•ŠμŒ
145**ν•΄κ²°:** 터미널이 ANSI escape sequencesλ₯Ό μ§€μ›ν•˜λŠ”μ§€ 확인
146
147### 문제: ncurses 링크 였λ₯˜
148**ν•΄κ²°:** ncurses 개발 νŒ¨ν‚€μ§€ μ„€μΉ˜ 확인
149```bash
150# macOS
151brew list ncurses
152
153# Ubuntu
154dpkg -l | grep libncurses
155```
156
157## λΌμ΄μ„ μŠ€
158
159ꡐ윑 λͺ©μ μœΌλ‘œ 자유둭게 μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.