TL;DR
- 클래식 1990년 MS-DOS용 Microsoft QBasic 게임 Nibbles를 C#과 .NET 10으로 충실히 재현하고, 원작의 9개 레벨, 동시 2인 플레이, PC 스피커 사운드를 구현함.
- CP437/유니코드 반블록 렌더링으로 표준 80x25 터미널에서 80x50 가상 해상도를 표현하고, 컬러·흑백 모드를 지원함.
- 원작 QBasic
PLAY매크로 문자열을 해석하는 8비트 사각파 사운드 엔진이 Windowswinmm.dll과Console.Beep대체 경로를 사용함. - BFS 경로 탐색과 플러드 필 생존 AI를 이용하는 자동 데모 모드와 18개 자동 단위 테스트를 포함함.
- 일반 실행, 빠른 시작, 플레이어·난이도 설정, 음소거 등 명령줄 옵션을 제공하며 .NET 10 SDK 또는 .NET 8·9와 UTF-8 터미널이 필요함.
개요
- Rick Raddatz가 작성한 원작
NIBBLES.BAS를 바탕으로 클래식 1990년 MS-DOS Microsoft QBasic 게임 Nibbles를 현대적으로 충실히 재현한 C# 게임임. - 터미널에서 깜빡임 없이 실행되며, PC 스피커 사운드 효과, 서브픽셀 텍스트 렌더링, 원작의 9개 레벨을 제공함.
기능
- QBasic 시각 효과와 텍스트 모드 시뮬레이션
- 원작 CP437/유니코드 반블록 렌더링 방식인
▀,▄,█을 사용해 표준 80x25 터미널 텍스트 모드에서 80x50 가상 해상도를 구현함. - 클래식 QBasic 색상 구성은 남색 플레이 영역, 노란색 Sammy, 밝은 자홍색 Jake, 밝은 빨간색 벽, 밝은 흰색·빨간색 대화창임.
- 컬러 및 흑백 모니터 모드, 애니메이션으로 반짝이는 테두리가 있는 타이틀 화면, 뱀이 충돌할 때의 클래식 10단계 인터레이스 디졸브 사망 애니메이션을 제공함.
- IBM PC 스피커 사운드 엔진
- 원작 QBasic
PLAY매크로 문자열을 위한 내장 인터프리터를 제공함. - 빈티지 Intel 8253 PIT PC 스피커 버저와 일치하는 8비트 사각파 오디오를 합성함.
- Windows에서는
winmm.dll을 통해 비동기 재생하고, 대체 경로로Console.Beep을 사용함. - 네 가지 대표 음악·효과음은 인트로 테마
MBT160O1L8CDEDCDL4ECC, 라운드 시작T160O1>L20CDEDCDL10ECC, 숫자 먹기MBO0L16>CCCE, 충돌 사운드MBO0L32EFGEFDC임. M키로 음소거를 전환함.- 1인 및 동시 2인 플레이
- 플레이어 1 Sammy는 방향키(↑, ↓, ←, →)를 사용함.
- 플레이어 2 Jake는 W, S, A, D 키를 사용함.
- 클래식 레벨 미로 9개와 무한 모드
- 모든 벽 좌표, 플레이어 시작 위치, 초기 방향이 원작 Microsoft 소스 코드와 수학적으로 동일함.
- 레벨 1은 개방형 경기장, 레벨 2는 중앙 가로 장벽, 레벨 3은 두 개의 세로 기둥, 레벨 4는 서로 마주 보는 모서리 장벽, 레벨 5는 모서리에 틈이 있는 중앙 폐쇄 상자임.
- 레벨 6은 중앙 통로가 있는 세로 막대 7개, 레벨 7은 점선 세로 분할선, 레벨 8은 엇갈린 세로 빗살, 레벨 9는 대각선 장벽임.
- 레벨 10 이후에는 엇갈린 장애물 필드가 이어짐.
- 자율 AI 데모 모드
--demo옵션으로 내장 BFS 경로 탐색 및 플러드 필 생존 AI가 게임을 자율적으로 진행함.- 키보드 조작 없이 게임플레이를 관찰하고 확인할 수 있으며, Esc 또는 아무 키를 눌러 종료함.
- 자동 단위 테스트
PLAY문자열 파서, 사운드 주파수, 경기장 경계, 좌표 변환, 레벨 맵, AI 경로 탐색을 검증하는 자동 테스트 18개를 포함함.
요구 사항
- .NET 10 SDK 또는 .NET 8·9가 필요함.
- Windows Terminal, PowerShell, CMD, VS Code Terminal 등 UTF-8을 지원하는 터미널이 필요함.
실행 방법
- 기본 대화형 게임은
dotnet run으로 실행함. - 실행 후 클래식 QBasic 프롬프트에서 플레이어 수(1 또는 2), 실력 수준(1~100), 게임 중 속도 증가 여부(Y 또는 N), 컬러·흑백 모니터 모드(C 또는 M)를 선택함.
- 자율 AI 데모는
dotnet run -- --demo로 실행함. - 인트로 프롬프트를 건너뛰고 1인 플레이어와 실력 수준 50으로 빠르게 시작하려면
dotnet run -- --quick --players 1 --skill 50을 실행함.
명령줄 옵션
- 사용 형식은
dotnet run [options]임. --demo: 자율 AI 데모 모드를 실행하며 Esc 또는 키 입력으로 종료함.--quick: 인트로와 설정 화면을 건너뛰고 기본값으로 바로 시작함.--players <1|2>: 플레이어 수를 1명 또는 2명으로 설정함.--skill <1-100>: 게임 속도·실력 수준을 설정하며 1은 초보, 90은 전문가, 100은 Twiddle Fingers임.--color: 컬러 모드를 활성화하며 기본 색상은 파란 배경과 노란색·자홍색 뱀임.--mono: 흑백 모니터 모드를 활성화함.--mute: 음소거 상태로 시작함.--no-accel: 레벨 진행에 따른 게임 속도 가속을 비활성화함.-h,--help: 도움말을 표시함.
게임 조작
- 위로 이동은 플레이어 1이 ↑, 플레이어 2가 W를 사용함.
- 아래로 이동은 플레이어 1이 ↓, 플레이어 2가 S를 사용함.
- 왼쪽 이동은 플레이어 1이 ←, 플레이어 2가 A를 사용함.
- 오른쪽 이동은 플레이어 1이 →, 플레이어 2가 D를 사용함.
- 일시 정지·재개는 두 플레이어 모두 P를 사용함.
- 음소거 전환은 두 플레이어 모두 M을 사용함.
- 게임 종료는 두 플레이어 모두 Esc를 사용함.
단위 테스트 실행
dotnet test를 실행하면 핵심 게임 로직과 사운드 시스템을 다루는 자동 테스트 18개가 실행됨.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요