# san_copilot **Repository Path**: zhunengfei/san_copilot ## Basic Information - **Project Name**: san_copilot - **Description**: 完全使用AI编写的《三国志》游戏 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-05 - **Last Updated**: 2026-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 三国志·霸王的大陆 (Go 复刻版) > **v0.3 Beta** · 使用 Go + Ebitengine 开发的 Windows 策略游戏,致敬经典 SFC 名作《三国志·霸王的大陆》 --- ## 目录 - [游戏简介](#游戏简介) - [功能特性](#功能特性) - [游戏截图 / 流程示意](#游戏截图--流程示意) - [环境要求](#环境要求) - [构建与运行](#构建与运行) - [游戏操作](#游戏操作) - [游戏玩法](#游戏玩法) - [项目结构](#项目结构) - [配置文件](#配置文件) - [开发状态](#开发状态) - [技术文档](#技术文档) --- ## 游戏简介 本游戏是对超任(SFC)经典策略游戏《三国志·霸王的大陆》的 Go 语言复刻,采用 [Ebitengine](https://ebitengine.org/) 作为 2D 游戏引擎,全程序化绘制(无外部图片资源)。 玩家选择一位君主,在三国时代的地图上发展内政、壮大军队,并通过双层战斗系统攻城略地,争夺天下霸业。 --- ## 功能特性 ### ✅ 已实现 | 模块 | 说明 | |------|------| | **5 个历史场景** | 黄巾之乱(184)、董卓乱政(190)、官渡之战(200,默认)、赤壁之战(220)、三国鼎立(263) | | **8 大可选势力** | 刘备、曹操、孙权、袁绍、刘表、马腾、刘璋、张鲁 | | **100 座城池** | 含城市(产资源)和关隘(仅驻军)两种类型,视窗可自由滚动 | | **290 名武将** | 含武力/统率/智力/忠诚/等级/装备/技能等完整属性,支持登场机制 | | **四维内政** | 商业/农业/民心/治安,影响金钱/粮草/人口产出 | | **令牌回合制** | 每回合行动令牌数 = f(城池数),消耗令牌执行内政/军事/征兵等 | | **装备系统** | 30 件装备(4系列武器 + 甲胄 + 特殊),商店按城市商业值解锁 | | **双层战斗系统** | Layer 1: 30×20 野外战略地图(回合制);Layer 2: 20×10 部队对战(实时循环制) | | **三层 AI** | 对战指令 AI / 野外行动 AI / 大地图进攻决策 AI | | **月/季结算** | 粮草消耗、税收产粮、人口增减、季节系数 | | **经济参数可配置** | JSON 配置文件,支持手动调整全部经济/难度参数 | ### ❌ 待实现 - 外交系统(同盟/劝降/离间) - 存档/读档 - 音效 & BGM - 武将头像/精灵动画 --- ## 游戏截图 / 流程示意 ### 游戏主流程 ``` 主菜单 └─► 难度选择(简单 / 普通 / 困难) └─► 场景选择(5个历史场景) └─► 君主选择(8大势力) └─► 大地图 ├─► 城池管理(内政 / 军事 / 商店 / 情报) │ └─► 进攻指令 │ ├─► Layer 1: 野外战略地图(30×20) │ │ └─► Layer 2: 部队对战(20×10) │ └─► 战斗结果(占城 / 撤退 / 俘虏) └─► 结束回合(月/季结算 + AI 行动) ``` ### 大地图示意 ``` ╔══════════════════════════════════════════════════════╗ ║ 三国志·霸王的大陆 Turn: 5 Year: 200 月: 3 ║ ║ ║ ║ ◆长安 ●洛阳 ●陈留 ║ ║ ◆武关 ●许昌 ●徐州 ║ ║ ●成都 ◆剑阁 ●荆州 ║ ║ ●江陵 ●柴桑 ●建业 ║ ║ [小地图] ║ ║ 令牌: 3/5 金: 12000 粮: 8500 Tab:切换城池 ║ ╚══════════════════════════════════════════════════════╝ ● 城市 ◆ 关隘 颜色=势力归属 ``` ### 双层战斗示意 ``` 【第一层:野外战略地图 30×20】 ┌────────────────────────────────────┐ │ ~~~ 山 山 山 ~~~ │ 攻方部队 [刘备] ▲ │ 平 ▲攻 平 平 平 平 ▼守 平 │ 武将: 关羽 张飞 诸葛亮 │ 平 平 平 平 平 平 平 平 │ 行动力: 8/12 │ ≈水≈ 平 平 山 城墙 城墙 │ │ ≈≈≈ ≈≈≈ 平 [ 城池 ] │ 守方部队 [曹操] ▼ └────────────────────────────────────┘ 武将: 张辽 许褚 两部队接触 → 进入第二层 【第二层:部队对战 20×10】 ┌────────────────────────────────────┐ │ 骑 骑 [关羽] 骑 . . [张辽] 骑 弓│ │ 步 步 步 步 步 . 步 步 步 步 │ │ 弓 弓 弓 . . . . 弓 弓 弓 │ └────────────────────────────────────┘ 指令: F=前进 B=后退 S=包围 W=待命 ``` --- ## 环境要求 | 项目 | 要求 | |------|------| | 操作系统 | Windows 10 / 11(64位) | | Go 版本 | 1.25+ | | 字体 | 系统需含 SimHei / 微软雅黑(msyh.ttf / msyh.ttc)或宋体 | | 显卡 | 支持 OpenGL 的独显或核显(Ebitengine 要求) | --- ## 构建与运行 ### 方式一:直接运行预编译版本 ```bash # 下载 sanguo.exe,双击或在终端运行: sanguo.exe ``` 首次运行会在当前目录自动生成 `config/` 文件夹(含全部 JSON 配置)。 ### 方式二:从源码构建 ```bash # 1. 克隆仓库 git clone <仓库地址> cd san_copilot # 2. 下载依赖 go mod download # 3. 编译 go build -o sanguo.exe . # 4. 运行 sanguo.exe ``` > **注意**: 编译时需要系统有 GCC(用于 Ebitengine 的 CGo 部分)。推荐使用 [TDM-GCC](https://jmeubank.github.io/tdm-gcc/) 或 [MSYS2 MinGW64](https://www.msys2.org/)。 --- ## 游戏操作 ### 全局按键 | 按键 | 功能 | |------|------| | `↑ ↓ ← →` | 导航 / 光标移动 | | `Enter` | 确认 / 进入 | | `Esc` | 返回上一级 | | `F11` | 全屏切换 | ### 大地图 | 按键 | 功能 | |------|------| | `↑ ↓ ← →` | 滚动地图视窗(8px/帧) | | `Shift + 方向键` | 快速滚动(20px/帧) | | `Tab` | 循环切换己方城池并自动居中 | | `Enter` | 进入当前选中城池的管理界面 | | `Space` | 结束本回合 | | `鼠标左键` | 点击城池 / 小地图定位 | ### 城池管理 | 按键 | 功能 | |------|------| | `↑ ↓` | 在菜单项/武将列表间移动 | | `Enter` | 选择执行 | | `Space` | 武将多选(用于组队进攻) | | `Esc` | 返回上一级菜单 | ### 战斗地图 | 按键 | 功能 | |------|------| | `↑ ↓ ← →` | 移动光标 | | `Enter` | 选择部队 / 确认移动 / 确认攻击 | | `F / B / S / W` | 部队指令(前进/后退/包围/待命) | | `Esc` | 取消选择 / 撤退 | --- ## 游戏玩法 ### 1. 开局选择 1. **难度**:简单(资源×1.5)/ 普通 / 困难(AI攻击+5) 2. **场景**:5个历史节点,决定各势力初始城池和武将分布 3. **君主**:从场景可用势力中选择一位,开始游玩 ### 2. 内政发展 进入城池管理后,可执行以下内政操作(每项消耗 1 令牌): | 操作 | 效果 | |------|------| | **开发商业** | 商业值+N(基于分配武将的智力) | | **开发农业** | 农业值+N | | **提升民心** | 民心值+N | | **提升治安** | 治安值+N | | **征兵** | 消耗金+粮,招募士兵(上限受武将等级影响) | | **搜索** | 有概率发现在野武将或金钱 | ### 3. 季节结算 每到 3/6/9/12 月进行**季结算**: - 税收 = 商业 × (人口/10) × 效率 × 1.0 - 产粮 = 农业 × (人口/10) × 效率 × 季节系数(春1.0 / 夏0.8 / 秋1.5 / 冬0.5) - 效率 = 0.30 + 0.70 × (民心/最大民心) 每月进行**月结算**:粮草消耗 = Σ(兵力/100) + 预备兵/200 ### 4. 战斗系统(双层) #### Layer 1 — 野外战略地图(30×20) - **回合制**,共享行动力池(12~60点,未用可结转) - 3种军种:**平地军**(平原无惩罚)/ **山地军**(山地无惩罚)/ **水军**(水域无惩罚) - 4种地形:平原 / 山地 / 水域 / 城墙 - 移动消耗行动力,攻击消耗 2 点,触发 Layer 2 - **主将阵亡** = 全军溃败 #### Layer 2 — 部队对战(20×10) - **即时循环制**:攻方行动 → 守方行动,每循环结算 - 小队系统:武将(100HP)+ 最多10小队(约90兵/队) - 3种兵种:**步兵**(8攻/8防)/ **弓兵**(6攻/6防,射程5)/ **骑兵**(12攻/11防,2次攻击) - 4种阵型:**鹤翼**(展开)/ **锥形**(突破)/ **长蛇**(纵深)/ **钩镰**(包抄) - **单挑系统**:轻击/普通/重击/擒拿,HP≤0+擒拿=俘虏 - **攻城变体**:x=14处有城墙,设置城门/攀爬点 #### 战斗结果 | 结果 | 说明 | |------|------| | **攻城成功** | 占领目标城池,俘虏武将可登用/处斩/释放 | | **攻城失败** | 攻方撤退,城池归还守方 | | **武将被俘** | 忠诚度低时可能被策反(投降率公式) | --- ## 项目结构 ``` san_copilot/ ├── main.go # 入口:加载字体/配置,启动游戏 ├── go.mod / go.sum # Go 模块定义 ├── sanguo.exe # 预编译可执行文件 │ ├── game/ # 全部游戏逻辑 │ ├── types.go # 核心类型定义(Lord, City, General, GameState 等) │ ├── config.go # 配置加载/生成,游戏数据初始化 │ ├── scene.go # Scene 接口 + SceneID 常量 │ ├── game.go # Game 主结构,场景切换 │ ├── font.go # 字体加载(4级:标题/大/普通/小) │ ├── ui.go # UI 工具函数,颜色常量 │ ├── menu.go # 主菜单场景 │ ├── difficulty.go # 难度选择场景 │ ├── scenarioselect.go # 历史场景选择 │ ├── lordselect.go # 君主选择(2×4网格) │ ├── worldmap.go # 大地图(视窗滚动/小地图/Tab导航) │ ├── citymanage.go # 城池管理(12+模式状态机) │ ├── turn.go # 回合结算(月/季/AI) │ ├── equipment.go # 30件装备定义 │ ├── battletypes.go # 战斗系统类型(BattleState/FieldUnit/Squad等) │ ├── combat.go # 对战核心逻辑(伤害/单挑/投降/攻城) │ ├── fieldmaps.go # 9种野外地图模板 │ ├── combatscene.go # Layer 2 对战场景 UI │ ├── fieldscene.go # Layer 1 野外地图场景 UI │ └── battleai.go # 三层 AI 系统 │ ├── config/ # JSON 配置(首次运行自动生成,可手动编辑) │ ├── settings.json # 经济参数、难度倍率、屏幕尺寸等 │ ├── cities.json # 100 座城池完整数据 │ ├── connections.json # 147 条道路连接 │ ├── generals.json # 290 名武将完整数据 │ ├── equipment.json # 30 件装备 │ └── scenarios/ # 5 个历史场景 │ ├── scenario_184.json # 黄巾之乱 │ ├── scenario_190.json # 董卓乱政 │ ├── scenario_200.json # 官渡之战(默认) │ ├── scenario_220.json # 赤壁之战 │ └── scenario_263.json # 三国鼎立 │ ├── doc/ # 开发文档 │ ├── design.md # 完整架构设计文档 │ ├── roadmap.md # 开发路线图与当前进度 │ ├── phase3-battle-design.md # 战斗系统详细设计 │ ├── phase3-battle-plan.md # Phase 3 实施计划 │ └── phase3-summary.md # Phase 3 完成总结 │ └── task.md # 原始需求文档 ``` --- ## 配置文件 `config/` 目录在**首次运行时自动生成**,可以直接删除重建(程序会用内置默认值重新生成)。 你也可以手动编辑 JSON 文件来调整游戏参数: ### settings.json 关键参数 | 参数 | 默认值 | 说明 | |------|--------|------| | `ScreenWidth / ScreenHeight` | 1024 / 768 | 窗口尺寸 | | `CommerceGain / AgricultureGain` | 8 / 8 | 内政基础收益 | | `MoraleGain / SecurityGain` | 5 / 5 | 民心/治安基础收益 | | `RecruitGoldCost / RecruitFoodCost` | 100 / 200 | 征兵消耗 | | `EasyMultiplier` | 1.5 | 简单难度资源加成倍率 | | `HardMultiplier / HardAttackBonus` | 1.5 / 5 | 困难难度AI加成 | | `SpringRate / SummerRate / AutumnRate / WinterRate` | 1.0/0.8/1.5/0.5 | 农业季节系数 | --- ## 开发状态 ### 已完成阶段 | 阶段 | 内容 | |------|------| | **Phase 1** | 场景管理框架、主菜单、难度/君主选择、大地图基础 | | **Phase 2** | 回合系统、内政/军事操作、基础 AI | | **Phase 2.5** | 全面重构:四维内政、装备系统、百城+290武将、5场景 | | **Phase 3** ✅ | 双层战斗系统(~3000行新增代码),三层 AI | ### 待开发 - [ ] 外交系统(同盟/劝降/离间) - [ ] 存档/读档(JSON序列化 GameState) - [ ] 战斗动画与精灵 - [ ] 音效 & BGM - [ ] 武将头像 --- ## 技术文档 对于希望参与开发或了解内部架构的读者: | 文档 | 说明 | |------|------| | [`doc/design.md`](doc/design.md) | 完整技术架构文档(类型定义、公式、状态机) | | [`doc/roadmap.md`](doc/roadmap.md) | 开发路线图与已知问题 | | [`doc/phase3-battle-design.md`](doc/phase3-battle-design.md) | 双层战斗系统完整设计规格 | | [`doc/phase3-summary.md`](doc/phase3-summary.md) | Phase 3 完成总结(新增文件清单) | ### 技术栈 | 组件 | 版本 | |------|------| | 语言 | Go 1.25 | | 游戏引擎 | [Ebitengine](https://ebitengine.org/) v2.9.9 | | 图像库 | golang.org/x/image | | 分辨率 | 1024×768(可配置,支持 F11 全屏) | | 美术 | 全程序化绘制(vector + text,无外部图片) | | 字体 | SimHei / 微软雅黑 / 宋体(自动检测系统字体) | --- ## License 本项目仅供学习交流用途。《三国志·霸王的大陆》版权归光荣(KOEI)所有。