# TypingRain **Repository Path**: h7ml/TypingRain ## Basic Information - **Project Name**: TypingRain - **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-10-16 - **Last Updated**: 2025-10-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 字母雨打字游戏 (TypingRain)
🎮 一款基于 HarmonyOS 的趣味打字练习游戏 [![HarmonyOS](https://img.shields.io/badge/HarmonyOS-NEXT-blue)](https://developer.harmonyos.com/) [![ArkTS](https://img.shields.io/badge/ArkTS-4.0-orange)](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/arkts-get-started-0000001504769321) [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
## 📖 项目简介 字母雨打字游戏是一款专为 HarmonyOS 平台开发的打字练习应用。通过游戏化的方式帮助用户提升打字速度和准确率。项目采用现代化的多页面架构,支持主题切换、数据持久化、完整的音效系统等丰富功能。 ### ✨ 核心特性 - 🎯 **三种游戏模式**:数字模式、字母模式、混合模式 - 🔥 **三档难度等级**:轻松、标准、地狱 - 🎨 **6套精美主题**:科技蓝、森林绿、日落橙、紫罗兰、樱花粉、深夜黑 - 📊 **完整数据统计**:实时记录游戏数据,多维度排行榜,今日数据分析 - 🎵 **丰富音效系统**:打字音效、连击音效、升级音效、失败音效 - 💾 **本地数据持久化**:自动保存游戏记录和设置 - 📱 **响应式设计**:完美适配各种屏幕尺寸和安全区 - 🎊 **粒子特效系统**:打字爆炸效果、连击特效 - 💪 **道具系统**:时间减速、炸弹、生命补充等随机掉落道具 ## 🚀 快速开始 ### 环境要求 - DevEco Studio 4.0+ - HarmonyOS SDK API 11+ - Node.js 16+ ### 安装运行 ```bash # 1. 克隆项目 git clone https://github.com/h7ml/TypingRain.git # 2. 打开 DevEco Studio # 文件 -> 打开 -> 选择项目目录 # 3. 等待依赖安装完成 # 4. 连接设备或启动模拟器 # 5. 点击运行按钮 ``` ### 项目结构 ``` TypingRain/ ├── entry/src/main/ets/ │ ├── pages/ # 📄 页面 │ │ ├── Home.ets # 首页 │ │ ├── Game.ets # 游戏页面 │ │ ├── Leaderboard.ets # 排行榜 │ │ └── Settings.ets # 设置 │ │ │ ├── models/ # 📦 数据模型 │ │ ├── Theme.ets # 主题模型 │ │ ├── GameRecord.ets # 游戏记录 │ │ └── PowerUp.ets # 道具模型 │ │ │ ├── services/ # 🔧 业务服务 │ │ ├── ThemeManager.ets # 主题管理器 │ │ ├── StorageService.ets # 数据存储服务 │ │ ├── GameSettingsManager.ets # 游戏设置管理 │ │ ├── AudioManager.ets # 音效管理器 │ │ ├── PowerUpManager.ets # 道具管理器 │ │ └── ParticleManager.ets # 粒子效果管理 │ │ │ ├── utils/ # 🛠️ 工具类 │ │ └── Constants.ets # 常量定义 │ │ │ ├── resources/ # 🎵 资源文件 │ │ └── rawfile/audio/ # 音效文件 │ │ ├── type.wav # 打字音效 │ │ ├── combo.wav # 连击音效 │ │ ├── levelup.wav # 升级音效 │ │ └── gameover.wav # 游戏结束音效 │ │ │ └── entryability/ # 🚪 入口 │ └── EntryAbility.ets # 应用入口 │ ├── ARCHITECTURE.md # 架构文档 ├── QUICKSTART.md # 快速开始指南 └── README.md # 项目说明 ``` ## 🎮 功能介绍 ### 1. 首页 (Home)
展开查看 - **智能卡片显示** - 无历史记录:显示快速开始卡片 - 有历史记录:显示历史最高分挑战卡片 - 根据用户状态智能切换,避免重复 - **历史最高分挑战** - 👑 金色主题设计,超大号分数展示 - 挑战性文案激励用户 - 一键接受挑战进入游戏 - **导航入口** - 🎮 开始游戏 - 📋 历史记录 - ⚙️ 设置
### 2. 游戏页面 (Game)
展开查看 - **游戏模式** - 🔢 数字模式:练习数字键输入 - 🔤 字母模式:练习字母键输入(大小写切换) - 🎯 混合模式:数字+字母组合键盘 - **难度选择** - 🌱 轻松:适合新手入门 - ⚡ 标准:均衡游戏体验 - 🔥 地狱:极限挑战 - **游戏机制** - 实时分数统计 - 生命值系统(3条生命) - 连击奖励(连击越高分数越高) - 关卡升级系统 - 动态难度调整 - **道具系统** - ⏰ 时间减速:字母下落速度减半 - 💣 炸弹:清除屏幕所有字母 - ❤️ 生命补充:恢复1条生命 - 随机掉落,稀有度分级 - **视觉效果** - 🎨 粒子爆炸效果 - ✨ 打字成功特效 - 🔥 连击提示动画 - 🎯 目标字母高亮 - **音效系统** - 打字音效 - 连击音效 - 升级音效 - 失败音效 - **游戏结束界面** - 完全遮盖游戏画面 - 玻璃态统计卡片 - 显示等级、准确率、最大连击 - "再来一次"和"返回首页"按钮
### 3. 排行榜 (Leaderboard)
展开查看 - **多维度筛选** - 游戏模式:全部/数字/字母/混合 - 时间范围:今日/本周/全部 - **排名展示** - 🥇🥈🥉 前三名特殊标识 - 完整游戏数据展示 - 完整时间显示(年-月-日 时:分:秒) - 个人最佳记录高亮 - **性能优化** - LazyForEach 虚拟滚动 - 大数据量流畅渲染
### 4. 设置页面 (Settings)
展开查看 - **主题设置** - 💠 科技蓝(默认)- 现代科技感 - 🌲 森林绿 - 清新自然风 - 🌅 日落橙 - 温暖活力感 - 🔮 紫罗兰 - 神秘优雅风 - 🌸 樱花粉 - 柔美浪漫风 - 🌙 深夜黑 - 极简暗黑风 - **游戏设置** - 默认难度选择 - 默认游戏模式 - 音效开关 - 震动反馈 - **数据管理** - 查看历史记录 - 导出游戏数据 - 清除历史记录(二次确认) - **关于信息** - 应用名称:字母雨 - 版本信息:v1.0.0 - 开发者:TypingRain Team - 应用简介:趣味打字练习游戏 - 支持平台:HarmonyOS NEXT - 开源协议:MIT License
## 🎨 主题系统 ### 主题预览 | 主题 | 主色调 | 风格 | |------|--------|------| | 💠 科技蓝 | #6366F1 | 现代、专业、科技感 | | 🌲 森林绿 | #10B981 | 自然、清新、护眼 | | 🌅 日落橙 | #F59E0B | 温暖、活力、激情 | | 🔮 紫罗兰 | #8B5CF6 | 神秘、优雅、梦幻 | | 🌸 樱花粉 | #EC4899 | 柔美、浪漫、可爱 | | 🌙 深夜黑 | #000000 | 极简、专注、护眼 | ### 使用主题系统 ```typescript import { themeManager } from '../services/ThemeManager'; import { Theme, ThemeColors } from '../models/Theme'; // 获取当前主题色 const colors: ThemeColors = themeManager.getColors(); // 切换主题 themeManager.setTheme('forest_green'); // 监听主题变化 themeManager.addListener((theme: Theme) => { console.log('主题已切换至:', theme.name); }); ``` ## 💾 数据持久化 ### 游戏记录 ```typescript import { storageService } from '../services/StorageService'; import { GameRecord } from '../models/GameRecord'; // 保存游戏记录 const record: GameRecord = { id: Date.now().toString(), timestamp: Date.now(), mode: 'number_only', difficulty: 'normal', score: 1000, level: 5, maxCombo: 20, duration: 120, accuracy: 0.95 }; await storageService.saveGameRecord(record); // 获取排行榜数据 const records = await storageService.getFilteredRecords('all', 'today'); // 获取今日统计 const stats = await storageService.getTodayStats(); // stats 包含: highScore, games, maxCombo, totalPlayTime, avgScore, avgAccuracy ``` ### 游戏设置 ```typescript import { gameSettingsManager } from '../services/GameSettingsManager'; // 获取设置 const settings = gameSettingsManager.getSettings(); // 切换音效 gameSettingsManager.toggleSound(); // 切换震动 gameSettingsManager.toggleVibration(); // 设置默认难度 gameSettingsManager.setDefaultDifficulty('hard'); // 设置默认模式 gameSettingsManager.setDefaultGameMode('mixed'); ``` ## 🔄 页面导航 ``` 应用启动 ↓ 首页 (Home) ├─→ 游戏页面 (Game) │ ├─→ 游戏进行中 │ │ ├─→ 道具效果 │ │ ├─→ 粒子特效 │ │ └─→ 音效播放 │ └─→ 游戏结束 → 保存记录 → 返回首页 │ ├─→ 排行榜 (Leaderboard) │ ├─→ 筛选记录 │ └─→ 返回首页 │ └─→ 设置 (Settings) ├─→ 主题切换(实时生效) ├─→ 音效设置 ├─→ 数据管理 └─→ 返回首页 ``` ## 📊 游戏数据模型 ### GameRecord(游戏记录) ```typescript interface GameRecord { id: string; // 记录ID timestamp: number; // 时间戳 mode: string; // 游戏模式 difficulty: string; // 难度 score: number; // 分数 level: number; // 达到关卡 maxCombo: number; // 最大连击 duration: number; // 游戏时长(秒) accuracy: number; // 准确率(0-1) } ``` ### TodayStats(今日统计) ```typescript interface TodayStats { highScore: number; // 今日最高分 games: number; // 游戏局数 maxCombo: number; // 最大连击 totalPlayTime: number; // 总游戏时长(秒) avgScore: number; // 平均分数 avgAccuracy: number; // 平均准确率(百分比) } ``` ### PowerUp(道具) ```typescript interface PowerUp { id: string; // 道具ID type: PowerUpType; // 道具类型 x: number; // X坐标 y: number; // Y坐标 activatedAt?: number; // 激活时间 config: PowerUpConfig; // 道具配置 } ``` ## 🛠️ 技术栈 - **开发语言**:ArkTS - **UI框架**:ArkUI - **状态管理**:@State / @Link - **路由管理**:Router - **数据存储**:Preferences - **音频播放**:AVPlayer - **日志系统**:Hilog - **动画系统**:animateTo ## 📈 开发路线图 ### ✅ 已完成 - [x] 多页面架构重构 - [x] 主题系统实现 - [x] 数据持久化 - [x] 三种游戏模式 - [x] 混合模式键盘 - [x] 排行榜系统 - [x] 设置页面 - [x] 音效系统 - [x] 道具系统 - [x] 粒子特效系统 - [x] 首页数据集成 - [x] 游戏记录自动保存 - [x] 排行榜真实数据 - [x] 历史最高分挑战卡片 - [x] 游戏结束界面优化 - [x] 完整时间显示 ### 📋 计划中 - [ ] 震动反馈实现 - [ ] 成就系统 - [ ] 数据导出功能完善 - [ ] 页面过渡动画 - [ ] 手势操作支持 - [ ] 社交分享功能 - [ ] 多语言支持 - [ ] 云端数据同步 ## 🎯 游戏玩法 ### 基础玩法 1. 选择游戏模式和难度 2. 点击"开始游戏"进入游戏 3. 观察从上往下掉落的字母/数字 4. 快速输入对应字符消除 5. 连续消除可获得连击加分 6. 避免字母落到底部扣除生命值 7. 生命值归零游戏结束 ### 进阶技巧 - **连击系统**:保持连击可获得额外分数加成 - **道具使用**:合理使用道具可以度过危机 - **难度选择**:根据自己的水平选择合适难度 - **模式切换**:不同模式练习不同键位 ## 🤝 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📝 开发规范 ### 代码风格 - 使用 ArkTS 严格模式 - 遵循 HarmonyOS 开发规范 - 组件命名使用大驼峰 - 方法命名使用小驼峰 - 常量使用全大写下划线 ### 提交规范 ``` feat: 新增功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 代码重构 perf: 性能优化 test: 测试相关 chore: 构建/工具变动 ``` ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 👥 作者 - **开发者** - TypingRain Team ## 🙏 致谢 - HarmonyOS 开发团队 - DevEco Studio - 所有贡献者 ## 📮 联系方式 - 项目地址: [GitHub](https://github.com/h7ml/TypingRain) - 问题反馈: [Issues](https://github.com/h7ml/TypingRain/issues) ---
**如果这个项目对你有帮助,请给它一个 ⭐️** Made with ❤️ by TypingRain Team