C 언어와 ncurses 라이브러리로 만든 터미널 기반 테트리스 게임입니다.
기본적인 테트리스 규칙에 더해 점수 랭킹 저장(rank.txt), 블록 그림자 표시, 추천 위치(R) 기능까지 포함되어 있습니다.
이 프로젝트는 ncurses 라이브러리를 활용할 수 있는 환경이라면 어디서든 실행 가능합니다.
즉, Linux, macOS, Windows(MSYS2/WSL 등)처럼 ncurses를 설치할 수 있는 환경이면 빌드와 실행이 가능합니다.
- 플레이: 블록 회전, 이동, 낙하, 줄 삭제 및 점수 계산
- 그림자 표시: 현재 블록이 최종 착지할 위치를
/로 미리 표시 - 추천 기능: 현재 + 다음 블록 2개를 고려해 최적 배치를 계산하고
R로 표시 - 랭킹 관리: 게임 종료 후 이름+점수를
rank.txt에 저장. 메뉴에서 랭킹 조회/검색/삭제 가능 - 터미널 UI: 게임판, 다음 블록, 점수 박스를 화면에 출력
C:\tetris
├─ Makefile # 빌드/실행/정리 규칙
├─ README.md # 프로젝트 설명 문서 (이 파일)
├─ .gitignore # 빌드 산출물 및 실행 중 생성 파일 제외
├─ tetris.c # 게임 메인 로직
├─ tetris.h # 상수/구조체/함수 선언, 블록 정의
└─ rank.txt # 실행 시 생성/갱신되는 점수 랭킹 파일 (버전관리 제외)
make→ 소스를 빌드하여 실행파일 tetris 생성 이후 ./tetris 통해서 실행make run→ 빌드 후 곧바로 게임 실행 (./tetris포함)make clean→tetris,tetris.o등 빌드 산출물 삭제
1: Play2: Rank (순위 구간 통해서 조회 / 이름 검색 / 특정 순위 삭제)3: Recommended Play (자동 플레이용)4: Exit
- ↑ : 블록 회전
- ↓ : 한 칸 하강
- ← / → : 좌우 이동
- Space : 빠른 낙하
- Q : 종료
코드를 기반으로 점수는 아래 방식으로 계산됩니다:
-
블록이 바닥 또는 다른 블록에 닿았을 때
AddBlockToField()에서 터치한 칸 수 × 10점을 부여- 예: 블록이 바닥이나 기존 블록과 2칸이 접촉 →
2 × 10 = 20점
-
줄 삭제 시
DeleteLine()에서 삭제한 줄 수² × 100점을 부여- 예: 1줄 삭제 →
1² × 100 = 100점 - 예: 2줄 삭제 →
2² × 100 = 400점 - 예: 3줄 삭제 →
3² × 100 = 900점
즉, 블록 고정 시 터치 점수 + 줄 삭제 점수가 누적되어 총 점수가 됩니다.
- 위치: 실행 디렉토리에 자동 생성 (
rank.txt) - 생성 시점: 게임 종료 후 이름을 입력하면 점수와 함께 저장
- 파일 형식:
- 1행: 랭킹 개수(정수)
- 2행 이후:
이름 점수(점수 내림차순으로 정렬됨)
- 메뉴 기능:
- 특정 구간(X~Y) 랭킹 출력
- 이름으로 검색하여 해당 점수 조회
- 특정 순위를 삭제하면 즉시 파일에 반영