# TextHun **Repository Path**: sdf2311d/text-hun ## Basic Information - **Project Name**: TextHun - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-23 - **Last Updated**: 2025-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Text Hun - 纯文字回合制魂系游戏 一个从零开始构建的纯文字回合制魂系游戏,采用 TypeScript 实现,具有完整的战斗系统、动态意图生成和 100% 测试覆盖率。 ## 项目特色 ✅ **完整的战斗系统** - 回合制战斗,包含玩家和敌人的完整交互 ✅ **动态意图系统** - 敌人行为基于配置动态生成,非硬编码 ✅ **丰富的动作系统** - 7种玩家动作(轻攻击、重攻击、闪避、防御、振刀、观察、后撤) ✅ **状态管理** - HP、耐力、架势、状态效果的完整管理系统 ✅ **文本渲染** - 美观的文本界面,包含状态条和战斗日志 ✅ **100%测试覆盖** - 所有模块都有完整的单元测试 ## 项目结构 ``` src/ ├── core/ # 核心系统 │ ├── types.ts # 类型定义 │ ├── entity.ts # 实体基类(玩家/敌人) │ └── combat.ts # 战斗循环引擎 ├── entities/ # 实体定义 │ ├── player.ts # 玩家角色 │ └── enemies.ts # 敌人模板(游荡活尸) ├── actions/ # 动作系统 │ ├── playerActions.ts # 玩家动作 │ └── enemyActions.ts # 敌人动作 ├── intent/ # 意图系统 │ ├── intentSystem.ts # 意图生成与解析 │ └── intentTemplates.ts # 意图模板 ├── ui/ # 文本界面 │ └── textRenderer.ts # 状态/战斗文本渲染 └── game.ts # 游戏入口 tests/ # 测试文件 ├── entity.test.ts ├── enemies.test.ts ├── playerActions.test.ts ├── enemyActions.test.ts ├── intentSystem.test.ts ├── combat.test.ts └── textRenderer.test.ts todo/ └── milestone_plan.md # 里程碑计划 ``` ## 安装与运行 ### 前置要求 - Node.js >= 16.0.0 - npm 或 yarn ### 安装依赖 ```bash npm install ``` ### 运行游戏 ```bash # 开发模式(使用 ts-node) npm run dev # 或编译后运行 npm run build npm start ``` ### 演示模式 ```bash # 运行演示,展示核心功能 npm run demo ``` ### 运行测试 ```bash # 运行所有测试 npm test # 带覆盖率运行测试 npm run test:coverage # 监听模式运行测试 npm run test:watch ``` ## 游戏玩法 ### 核心机制 - **HP (生命值)**:归零则死亡 - **ST (耐力值)**:使用动作需要消耗,每回合恢复10点 - **架势**:稳定、稳固、失衡、严重失衡、硬直 - **意图**:敌人的下一步行动提示 ### 玩家动作 | 动作 | 消耗 | 效果 | |------|------|------| | 轻攻击 | 10ST | 稳定伤害,武器基础伤害×0.8 | | 重攻击 | 20ST | 高伤害,武器基础伤害×1.5,可打断敌人 | | 闪避 | 15ST | 完全规避下一次攻击 | | 防御 | 5ST | 减少50%受到的伤害 | | 振刀 | 15ST | 高风险高回报,可打断重攻击 | | 观察 | 0ST | 获取敌人信息和弱点 | | 后撤 | 10ST | 拉开距离,恢复5ST | ### 战斗技巧 1. **注意敌人的意图提示** - 根据意图选择合适的应对方式 2. **合理管理耐力值** - 不要过度消耗,保留应对能力 3. **针对敌人弱点攻击** - 使用观察获取敌人弱点信息 4. **学会闪避和振刀的时机** - 重攻击意图时振刀成功率更高 5. **观察敌人获取更多信息** - 了解敌人HP和弱点 ## 开发指南 ### 核心设计决策 1. **意图系统**:采用动态意图生成,根据敌人配置实时生成行为描述 2. **状态管理**:每次动作后清晰更新状态,确保数据一致性 3. **文本渲染**:所有输出通过渲染器,便于后续扩展图形界面 4. **测试优先**:每个模块先写测试,确保100%覆盖率 ### 添加新敌人类型 在 `src/entities/enemies.ts` 中添加新的敌人配置: ```typescript export const newEnemyConfig: EnemyConfig = { name: '新敌人', difficulty: '中等', baseHealth: 100, baseStamina: 50, attackPatterns: { 快速攻击: { intent: '快速攻击', actions: ['快速动作1', '快速动作2'], adjectives: ['快速', '敏捷'], observations: ['破绽小', '容易闪避'], }, // 更多攻击模式... }, weaknesses: ['弱点1', '弱点2'], }; ``` ### 添加新玩家动作 在 `src/actions/playerActions.ts` 中添加新动作: ```typescript export const newAction: Action = { id: 'new_action', name: '新动作', staminaCost: 15, execute: (actor: CombatEntity, target: CombatEntity): ActionResult => { // 实现逻辑... return { success: true, message: '动作执行成功', damageDealt: 10, staminaCost: 15, }; }, }; ``` ## 里程碑完成情况 - ✅ 阶段一:项目基础搭建 - ✅ 阶段二:核心数据模型实现 - ✅ 阶段三:实体系统实现 - ✅ 阶段四:意图系统实现 - ✅ 阶段五:动作系统实现 - ✅ 阶段六:战斗循环引擎 - ✅ 阶段七:文本渲染器 - ✅ 阶段八:最小闭环战斗场景 - ✅ 阶段九:测试覆盖完善(100%) - ✅ 阶段十:文档和配置 ## 最小闭环验证 ✅ 玩家可以与游荡活尸进行完整战斗 ✅ 战斗包含至少5个回合 ✅ 玩家可以使用轻攻击、重攻击、闪避、振刀等动作 ✅ 敌人根据意图系统动态生成行为 ✅ 战斗有明确胜负结果 ✅ 输出清晰的文本战斗日志 ✅ 所有代码有100%测试覆盖 ## 技术栈 - **语言**:TypeScript - **测试框架**:Jest + ts-jest - **构建工具**:tsc(TypeScript 编译器) - **代码风格**:ESLint + TypeScript ESLint ## 未来扩展方向 1. **更多敌人类型** - 添加不同难度的敌人 2. **技能系统** - 玩家可以学习和升级技能 3. **装备系统** - 武器、护甲的收集和强化 4. **关卡系统** - 多关卡战斗流程 5. **存档系统** - 游戏进度保存和加载 6. **图形界面** - 基于Canvas或WebGL的视觉呈现 ## 许可证 MIT ## 贡献 欢迎提交 Issue 和 Pull Request! --- **祝你在Text Hun的世界中玩得愉快!** 🔥⚔️🛡️