# NodeGame **Repository Path**: cycle-studio/node-game ## Basic Information - **Project Name**: NodeGame - **Description**: 节点游戏 - **Primary Language**: JavaScript - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-06-02 - **Last Updated**: 2025-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 节点游戏 (Node Game) 一个基于React和Redux的交互式节点探索游戏。玩家可以在不同的节点之间移动,收集物品,与NPC对话,解锁箱子,完成任务。 ## 🎮 游戏特性 ### 核心功能 - **节点探索系统**: 在不同类型的节点间移动和探索 - **物品收集**: 收集各种物品并管理背包 - **箱子解锁**: 使用钥匙或撬锁技能打开箱子 - **NPC对话**: 与角色进行分支对话,获取任务和信息 - **任务系统**: 接受和完成各种任务 - **存档系统**: 保存和加载游戏进度 ### 节点类型 1. **位置节点** (🏠): 可以移动到的地点 2. **物品节点** (⭐): 可以收集的物品 3. **箱子节点** (📦): 可以打开的容器,可能需要钥匙或撬锁技能 4. **角色节点** (👤): 可以对话的NPC ### 玩家属性 - **生命值**: 玩家的健康状态 - **饥饿值**: 玩家的饥饿程度 - **攻击力**: 战斗能力 - **撬锁技能**: 打开锁定箱子的能力 ### 物品类型 - **武器**: 提升攻击力 - **消耗品**: 恢复生命值或饥饿值 - **钥匙**: 打开特定的箱子 - **贵重物品**: 有价值的收藏品 - **特殊物品**: 提供技能加成或特殊效果 ## 🚀 开始游戏 ### 安装依赖 ```bash npm install ``` ### 启动开发服务器 ```bash npm start ``` 游戏将在 `http://localhost:8080` 启动。 ### 构建生产版本 ```bash npm build ``` ## 🎯 游戏玩法 ### 基本操作 1. **移动**: 点击位置节点前往新地点 2. **收集**: 点击物品节点收集物品 3. **开箱**: 点击箱子节点,选择开启方式 4. **对话**: 点击角色节点开始对话 ### 界面说明 - **左侧面板**: 显示玩家状态、背包和游戏控制 - **右侧区域**: 显示当前位置和可到达的节点 - **背包**: 查看和使用收集的物品 - **对话界面**: 与NPC进行交互 - **存档菜单**: 保存和加载游戏进度 ### 游戏提示 - 收集钥匙可以打开对应的箱子 - 阅读古老书籍可以提升撬锁技能 - 与商人对话可以进行物品交易 - 完成任务可以获得奖励 ## 🛠 技术架构 ### 前端技术栈 - **React 17**: 用户界面框架 - **Redux Toolkit**: 状态管理 - **Webpack**: 模块打包 - **Babel**: JavaScript编译 - **CSS3**: 样式和动画 ### 项目结构 ``` src/ ├── components/ # React组件 │ ├── Game.js # 主游戏组件 │ ├── NodeMap.js # 节点地图 │ ├── Node.js # 单个节点 │ ├── PlayerPanel.js # 玩家面板 │ ├── Inventory.js # 背包界面 │ ├── DialogueInterface.js # 对话界面 │ └── SaveLoadMenu.js # 存档菜单 ├── store/ # Redux状态管理 │ ├── store.js # Store配置 │ └── gameSlice.js # 游戏状态切片 ├── data/ # 游戏数据 │ ├── gameData.json # 节点数据 │ ├── itemData.json # 物品数据 │ ├── characterData.json # 角色数据 │ └── dialogues/ # 对话树数据 ├── utils/ # 工具函数 │ └── dialogueUtils.js # 对话工具 ├── styles/ # 样式文件 │ └── App.css # 主样式 └── App.js # 应用入口 ``` ### 数据结构 #### 节点数据 ```json { "id": "节点ID", "text": "节点名称", "type": "节点类型", "children": ["子节点ID列表"] } ``` #### 物品数据 ```json { "id": "物品ID", "name": "物品名称", "type": "物品类型", "description": "物品描述", "effects": "物品效果", "icon": "物品图标" } ``` #### 对话数据 ```json { "startNode": "起始节点", "nodes": { "节点ID": { "speaker": "说话者", "text": "对话内容", "options": "选项列表" } } } ``` ## 🎨 自定义和扩展 ### 添加新节点 1. 在 `src/data/gameData.json` 中添加节点定义 2. 设置节点类型和子节点关系 ### 添加新物品 1. 在 `src/data/itemData.json` 中定义物品属性 2. 设置物品效果和图标 ### 添加新角色 1. 在 `src/data/characterData.json` 中添加角色信息 2. 在 `src/data/dialogues/` 中创建对话树文件 ### 修改样式 编辑 `src/styles/App.css` 来自定义游戏外观。 ## 📝 开发计划 ### 已完成功能 - ✅ 基础节点系统 - ✅ 物品收集和背包 - ✅ 箱子解锁机制 - ✅ NPC对话系统 - ✅ 任务系统 - ✅ 存档功能 - ✅ 响应式界面 ### 未来计划 - 🔄 战斗系统 - 🔄 更多节点类型 - 🔄 成就系统 - 🔄 音效和背景音乐 - 🔄 多语言支持 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进游戏! ## 📄 许可证 MIT License --- 享受你的节点探索之旅!🎮✨