# 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 的趣味打字练习游戏
[](https://developer.harmonyos.com/)
[](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/arkts-get-started-0000001504769321)
[](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