# 삼국시대 · 천하의 기록

서버·설치·인터넷 연결 없이 실행하는 싱글플레이 웹 재구성판입니다.

## 실행

1. ZIP 파일을 모두 압축 해제합니다.
2. `엑셀삼국지.html`을 Chrome 또는 Edge 등 브라우저로 엽니다.
3. 기본 군주 광개토로 바로 플레이하거나, `새 게임`에서 군주를 선택합니다.
4. 우리 도시를 선택하고 내정·군사·장수 명령을 내린 뒤 `턴 종료`를 누릅니다.
5. 20개 도시를 모두 점령하면 승리합니다. 모든 영토를 잃으면 패배합니다.

## 지도 조작

- 마우스 휠: 가리킨 지점을 중심으로 확대·축소
- 마우스 드래그: 지도 이동. 터치에서는 한 손가락 이동·두 손가락 확대
- + / − 버튼: 화면 중앙을 기준으로 확대·축소
- 기본 보기: 처음의 한반도 중심 보기로 복귀
- 선택 도시로: 선택한 도시가 보이도록 이동
- 지도에 키보드 초점을 두면 방향키 이동, +/− 확대·축소, Home 기본 보기
- 넓은 화면은 같은 원본 지도의 주변 부분으로 채웁니다. 축소 한계와 이동 경계가 있어 지도 밖의 빈 공간이 드러나지 않습니다.
- 지도 보기 위치는 게임 진행 저장과 별개이며 다시 열면 기본 보기로 시작합니다.

## 저장과 전달

- `저장` 또는 Ctrl+S를 누르고 처음 한 번 HTML이 있는 폴더를 선택합니다.
- 파일 직접 쓰기가 가능한 브라우저에서는 선택한 `.sav` 파일에 다시 저장합니다.
- `다른 이름으로` 또는 Ctrl+Shift+S로 다른 저장 파일을 만들 수 있습니다.
- 파일 접근 기능이 없거나 사용할 수 없는 환경에서는 `.sav` 파일을 다운로드합니다. 다운로드된 파일을 HTML 옆으로 옮기세요.
- 다운로드의 실제 완료 여부는 페이지에서 확인할 수 없습니다. 파일을 확인한 후 종료하세요.
- 다음 실행 시 `불러오기`에서 `.sav`를 선택합니다. 브라우저를 닫을 때 자동으로 파일에 저장하지 않습니다.
- HTML과 `.sav`를 같은 폴더에 넣어 복사하면 다른 PC에서 이어서 플레이할 수 있습니다.
- 저장 창의 최초 폴더와 권한 유지 여부는 브라우저가 결정합니다. HTML 폴더를 자동으로 강제 지정하지 않습니다.
- 원본 `.xls` 저장을 가져오는 기능은 없습니다. 이 웹 버전의 `.sav`만 지원합니다.

## 구현 범위

원본 초기 도시 자원 20곳, 장수 62명의 능력치, 도시 연결표, 7개 군주 선택지를 사용했습니다. 원본 수록 장수 능력치는 저장 당시 성장 상태를 포함할 수 있습니다.

징병의 기본 금·곡식 비용과 인구·인지도 감소, 곡식 방출의 인지도 상승, 매력에 따른 기본 등용 확률은 VBA를 참고했습니다. 중앙 자원 대신 도시별 자원으로 관리합니다.

새 게임 배치, 도시별 턴당 명령 2회, 턴 수입, 군량 소비, 전투, AI, 거래, 훈련, 개발은 웹용으로 단순화·재구성한 규칙입니다. 원본과 같은 결과를 내는 완전 이식판은 아닙니다.

아직 이식하지 않은 기능: 원본의 상세 전술 및 계략, 신기 발굴·장착, 문명·기술 발전, 보직·평정, 휴직, 미니게임, 특수 이벤트. 지력은 표시되지만 현재 전투 계산에는 사용되지 않습니다.

## 디자인 및 원본

처음 사용한 고지도 그림에서 한반도 부분을 확대하고, 그림 속 육지·섬에 맞춰 도시 위치를 다시 배치했습니다. 우산은 울릉도, 탐라는 제주도, 대마는 쓰시마에 대응하도록 표시합니다.

처음 그림도 생성 이미지이므로 해안선과 산맥의 정확성을 보증하지 않습니다. 도시 정보의 위·경도는 지리 참고 정보이고 화면 표식은 그림 안에서 별도로 맞춘 대표 위치입니다. 그림의 모든 산맥을 실제 산맥으로 고증한 것은 아닙니다.

동예·옥저 등은 지역 대표점이고, 계룡대·개경 등은 원본의 시대가 혼합된 이름을 유지했습니다. 각 도시 설명과 근거 링크를 참고하세요.

기존 저장 파일도 그대로 불러올 수 있습니다. 도시 위치는 최신 배치로 자동 적용되고 진행 상황은 유지됩니다.

원본 표기: EXCEL GAME 삼국시대, 2006.11.17. 만든이 백.
원본 파일과 매크로는 수정하거나 실행하지 않았습니다.

## 개발 파일

배포에는 HTML 하나만 필요합니다. 프로젝트의 src, scripts, analysis, tests, assets는 유지보수용입니다.
`scripts/build.py`는 원본 정적 추출 데이터와 소스를 HTML에 통합합니다.
`tests/game.test.cjs`는 Node.js에서 규칙·저장 복원·입력 검증을 점검합니다.
