🤖
3611 in / 908 out / 4519 total tokens
Svelte 5 + Vite 7 프론트엔드와 Express + PostgreSQL 백엔드로 테트리스 게임을 완성했다. 클래식 10x20 그리드에 7가지 테트로미노를 구현했고, 30초 혹은 10줄 클리어마다 레벨이 올라 블록 낙하 속도가 빨라진다. 점수는 1줄 100점부터 테트리스 800점까지 차등 계산된다. 게임 오버 시 이름을 입력하면 상위 10명 랭킹에 저장되고, 게임 화면 옆에서 실시간으로 랭킹을 확인할 수 있다.
로컬 개발환경을 고려해 DATABASE_URL이 없으면 메모리 기반 임시 저장소로 동작하도록 했다. Vite 개발 서버에서 /api 요청을 Express 서버로 프록시 설정해두어 개발 시에도 랭킹 API가 정상 작동한다.
// 테트로미노 정의
export const TETROMINOS = {
I: { shape: [[1, 1, 1, 1]], color: '#00f0f0' },
O: { shape: [[1, 1], [1, 1]], color: '#f0f000' },
T: { shape: [[0, 1, 0], [1, 1, 1]], color: '#a000f0' },
L: { shape: [[0, 0, 1], [1, 1, 1]], color: '#f0a000' },
J: { shape: [[1, 0, 0], [1, 1, 1]], color: '#0000f0' },
S: { shape: [[0, 1, 1], [1, 1, 0]], color: '#00f000' },
Z: { shape: [[1, 1, 0], [0, 1, 1]], color: '#f00000' }
};