移除已追踪的视频资源,按.gitignore排除
6
.gitignore
vendored
@@ -1,6 +0,0 @@
|
||||
# 排除根目录下的 video 文件夹
|
||||
rg-09112127/ideo/
|
||||
rg_admin/target/
|
||||
rg-09112127.zip
|
||||
# (可选)若需要排除项目中所有层级的 video 文件夹(无论位置),直接写:
|
||||
# video/
|
||||
5
rg-09112127/.idea/.gitignore
generated
vendored
@@ -1,5 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
13
rg-09112127/.idea/material_theme_project_new.xml
generated
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="MaterialThemeProjectNewConfig">
|
||||
<option name="metadata">
|
||||
<MTProjectMetadataState>
|
||||
<option name="migrated" value="true" />
|
||||
<option name="pristineConfig" value="false" />
|
||||
<option name="userId" value="-688d94ea:18d4608dbbf:-8000" />
|
||||
<option name="version" value="8.13.2" />
|
||||
</MTProjectMetadataState>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
4
rg-09112127/.idea/misc.xml
generated
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="11" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
8
rg-09112127/.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/rg-09112127.iml" filepath="$PROJECT_DIR$/.idea/rg-09112127.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
12
rg-09112127/.idea/rg-09112127.iml
generated
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,176 +0,0 @@
|
||||
# AI 游戏生成器功能总结
|
||||
|
||||
## 🎮 功能概述
|
||||
|
||||
AI 游戏生成器是一个智能化的游戏创建系统,能够根据学生的学科、难度和题目数量自动生成个性化的游戏页面。每个生成的游戏都是完整的、可玩的,包含虚拟老师、数据跟踪和丰富的视觉效果。
|
||||
|
||||
## ✨ 主要特性
|
||||
|
||||
### 1. 智能题目生成
|
||||
|
||||
- **本地题目库**: 使用 `data/questionBank.json` 存储丰富的题目资源
|
||||
- **多学科支持**: 数学、语文、生活三大学科
|
||||
- **难度分级**: 1-5 级难度,自动筛选适合的题目
|
||||
- **个性化选择**: 根据学生能力动态调整题目难度
|
||||
- **题目数量**: 支持 3-10 题,默认 5 题,确保与游戏实际题目数一致
|
||||
|
||||
### 2. 完整游戏页面生成
|
||||
|
||||
- **动态 HTML 生成**: 根据学科和类型生成对应的游戏页面
|
||||
- **页面内嵌入**: 生成的游戏在当前页面内以模态框形式显示
|
||||
- **完整功能集成**: 包含虚拟老师、数据跟踪、视觉效果等
|
||||
|
||||
### 3. 虚拟老师集成
|
||||
|
||||
- **智能语音**: 游戏介绍、题目朗读、反馈指导
|
||||
- **状态管理**: 根据答题正确性更新虚拟老师状态
|
||||
- **语音冲突解决**: 智能管理语音播放,避免冲突
|
||||
|
||||
### 4. 数据跟踪系统
|
||||
|
||||
- **游戏统计**: 得分、正确率、用时等详细数据
|
||||
- **后端集成**: 自动保存游戏结果到数据库
|
||||
- **学习分析**: 为后续个性化推荐提供数据支持
|
||||
|
||||
## 🎯 支持的游戏类型
|
||||
|
||||
### 数学游戏
|
||||
|
||||
- **加法游戏**: 基础数学运算练习
|
||||
- **比大小游戏**: 数字比较和逻辑思维
|
||||
- **时钟游戏**: 时间认知和计算
|
||||
|
||||
### 语文游戏
|
||||
|
||||
- **拼音游戏**: 声调识别和拼音学习
|
||||
- **组词游戏**: 词汇组合和语言表达
|
||||
- **古诗游戏**: 经典诗词背诵和理解
|
||||
|
||||
### 生活游戏
|
||||
|
||||
- **安全知识**: 交通安全、生活安全常识
|
||||
- **情绪管理**: 情感识别和表达
|
||||
- **日常生活**: 垃圾分类、生活习惯等
|
||||
|
||||
## 🛠️ 技术实现
|
||||
|
||||
### 核心文件
|
||||
|
||||
- `js/aiGameGenerator.js`: 主要生成器逻辑
|
||||
- `data/questionBank.json`: 题目库数据
|
||||
- `html/ai_game_generator.html`: 用户界面
|
||||
- `html/test_ai_game_generator.html`: 功能测试页面
|
||||
|
||||
### 关键方法
|
||||
|
||||
- `generateGamePage()`: 生成完整游戏页面
|
||||
- `embedGameInCurrentPage()`: 在当前页面内嵌入游戏
|
||||
- `initializeGameLogic()`: 初始化游戏逻辑
|
||||
- `getQuestionsFromBank()`: 从题目库获取题目
|
||||
- `getMathGameStyle()`: 获取游戏样式
|
||||
|
||||
### 样式系统
|
||||
|
||||
- **数学游戏**: 蓝色主题 (`#70a1ff`)
|
||||
- **语文游戏**: 粉色主题 (`#ff6b9d`)
|
||||
- **生活游戏**: 青色主题 (`#4ecdc4`)
|
||||
|
||||
## 🎨 视觉效果
|
||||
|
||||
### 游戏界面
|
||||
|
||||
- **现代化设计**: 圆角、阴影、渐变效果
|
||||
- **响应式布局**: 适配不同屏幕尺寸
|
||||
- **动画效果**: 按钮悬停、点击反馈
|
||||
|
||||
### 反馈系统
|
||||
|
||||
- **彩色纸屑**: 答对题目时的庆祝效果
|
||||
- **颜色提示**: 正确答案绿色,错误答案红色
|
||||
- **进度条**: 实时显示游戏进度
|
||||
|
||||
## 📊 数据管理
|
||||
|
||||
### 游戏统计
|
||||
|
||||
- 总得分和正确率
|
||||
- 答题用时分析
|
||||
- 题目难度分布
|
||||
|
||||
### 学习分析
|
||||
|
||||
- 学生强项和弱项识别
|
||||
- 个性化难度推荐
|
||||
- 学习进度跟踪
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
### 1. 基本使用
|
||||
|
||||
```javascript
|
||||
// 初始化生成器
|
||||
const generator = new AIGameGenerator();
|
||||
await generator.init();
|
||||
|
||||
// 生成游戏
|
||||
generator.generateGamePage("math", "quiz", 5);
|
||||
```
|
||||
|
||||
### 2. 自定义配置
|
||||
|
||||
```javascript
|
||||
// 设置难度
|
||||
generator.currentDifficulty = 3;
|
||||
|
||||
// 生成特定学科游戏
|
||||
generator.generateGamePage("language", "quiz", 8);
|
||||
```
|
||||
|
||||
### 3. 测试功能
|
||||
|
||||
访问 `test_ai_game_generator.html` 页面进行功能测试
|
||||
|
||||
## 🔧 扩展性
|
||||
|
||||
### 添加新学科
|
||||
|
||||
1. 在 `questionBank.json` 中添加新学科题目
|
||||
2. 在 `createGamePageHTML()` 中添加学科处理逻辑
|
||||
3. 创建对应的样式方法
|
||||
|
||||
### 添加新游戏类型
|
||||
|
||||
1. 扩展 `generateGamePage()` 方法
|
||||
2. 添加新的游戏模板
|
||||
3. 实现特定的游戏逻辑
|
||||
|
||||
## 📈 未来规划
|
||||
|
||||
### 功能增强
|
||||
|
||||
- [ ] 更多学科支持(英语、科学等)
|
||||
- [ ] 更复杂的游戏类型(拼图、记忆等)
|
||||
- [ ] 多人对战模式
|
||||
- [ ] 成就系统
|
||||
|
||||
### 技术优化
|
||||
|
||||
- [ ] 题目库动态加载
|
||||
- [ ] 游戏模板系统
|
||||
- [ ] 性能优化
|
||||
- [ ] 离线支持
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
AI 游戏生成器成功实现了:
|
||||
|
||||
- ✅ 智能题目生成和筛选
|
||||
- ✅ 完整游戏页面动态创建
|
||||
- ✅ 页面内嵌入游戏(模态框形式)
|
||||
- ✅ 虚拟老师集成
|
||||
- ✅ 数据跟踪和分析
|
||||
- ✅ 丰富的视觉效果
|
||||
- ✅ 多学科支持
|
||||
- ✅ 个性化难度调整
|
||||
|
||||
这个系统为教育游戏开发提供了一个强大的基础框架,能够快速生成高质量、个性化的学习游戏。
|
||||
@@ -1,164 +0,0 @@
|
||||
# AI讲故事功能使用指南
|
||||
|
||||
## 功能介绍
|
||||
|
||||
AI讲故事是一个智能童话阅读系统,为孩子提供个性化的故事阅读体验。系统具有以下特点:
|
||||
|
||||
### 🌟 核心功能
|
||||
- **智能故事库**:包含多个分类的精选故事
|
||||
- **AI语音朗读**:虚拟猫头鹰老师自然语音讲解
|
||||
- **交互式阅读**:支持逐段阅读和进度控制
|
||||
- **语音控制**:支持语音开关和播放控制
|
||||
- **响应式设计**:适配各种设备尺寸
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
├── html/
|
||||
│ └── ai_storytelling.html # 主页面文件
|
||||
├── css/
|
||||
│ └── ai_storytelling.css # 专用样式文件
|
||||
├── js/
|
||||
│ └── aiStorytelling.js # 主要功能逻辑
|
||||
└── data/
|
||||
└── storyBank.json # 故事数据库
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 1. 启动系统
|
||||
```bash
|
||||
# 进入项目目录
|
||||
cd rg-09112127
|
||||
|
||||
# 启动本地服务器
|
||||
python -m http.server 8000
|
||||
|
||||
# 在浏览器中打开
|
||||
http://localhost:8000/html/ai_storytelling.html
|
||||
```
|
||||
|
||||
### 2. 功能操作
|
||||
|
||||
#### 📚 选择故事
|
||||
- **分类筛选**:使用顶部的筛选按钮按故事类型浏览
|
||||
- **查看详情**:点击"详情"按钮查看故事信息
|
||||
- **开始阅读**:点击"开始阅读"进入阅读界面
|
||||
|
||||
#### 🎭 阅读体验
|
||||
- **段落导航**:使用"上一段"/"下一段"按钮控制进度
|
||||
- **AI朗读**:点击"朗读本段"听虚拟老师讲故事
|
||||
- **语音控制**:右下角的语音控制按钮
|
||||
- 🔇 开启/关闭语音
|
||||
- ⏯️ 播放/暂停
|
||||
- ⏹️ 停止播放
|
||||
|
||||
#### ⌨️ 快捷键支持
|
||||
- `ESC`:关闭阅读器
|
||||
- `←`/`→`:上一段/下一段
|
||||
- `空格`:朗读当前段落
|
||||
|
||||
### 3. 故事数据结构
|
||||
|
||||
每个故事包含以下信息:
|
||||
```json
|
||||
{
|
||||
"id": "story_xxx", // 故事唯一标识
|
||||
"title": "故事标题", // 显示标题
|
||||
"category": "故事分类", // 用于筛选
|
||||
"difficulty": 3, // 难度等级(1-5)
|
||||
"cover": "封面图片路径", // 故事封面
|
||||
"description": "故事简介", // 简短描述
|
||||
"timeEstimate": "预计时长", // 阅读时间
|
||||
"ageRange": "适合年龄", // 推荐年龄
|
||||
"content": { // 故事内容
|
||||
"beginning": {...}, // 开头部分
|
||||
"middle": {...}, // 中间部分
|
||||
"ending": {...} // 结尾部分
|
||||
},
|
||||
"questions": [...] // 故事相关问题
|
||||
}
|
||||
```
|
||||
|
||||
## 技术特色
|
||||
|
||||
### 🧠 AI集成
|
||||
- **虚拟猫头鹰老师**:使用`virtualTeacher.js`提供语音互动
|
||||
- **语音合成**:集成讯飞语音API进行自然语音朗读
|
||||
- **智能交互**:根据用户行为调整讲解方式
|
||||
|
||||
### 🎨 用户体验
|
||||
- **动画效果**:使用Animate.css提供流畅动画
|
||||
- **响应式布局**:支持桌面和移动设备
|
||||
- **无障碍支持**:集成语音播报功能
|
||||
|
||||
### 📱 适配特性
|
||||
- **渐进加载**:分步加载内容,提升用户体验
|
||||
- **错误处理**:优雅的错误处理和用户反馈
|
||||
- **性能优化**:图片懒加载和缓存机制
|
||||
|
||||
## 自定义扩展
|
||||
|
||||
### 添加新故事
|
||||
1. 编辑`data/storyBank.json`文件
|
||||
2. 添加新的故事对象到`stories`数组
|
||||
3. 确保故事数据结构完整
|
||||
4. 添加对应的图片资源到`asset`目录
|
||||
|
||||
### 修改语音设置
|
||||
- 在`js/aiStorytelling.js`中调整语音参数:
|
||||
```javascript
|
||||
window.virtualTeacher.speak(text, {
|
||||
rate: 0.8, // 语速(0.1-10)
|
||||
pitch: 1.1, // 音调(0-2)
|
||||
volume: 0.8 // 音量(0-1)
|
||||
});
|
||||
```
|
||||
|
||||
### 样式自定义
|
||||
- 编辑`css/ai_storytelling.css`调整外观
|
||||
- 主要样式变量:
|
||||
- 主背景色:`#667eea`到`#764ba2`渐变色
|
||||
- 按钮色彩:蓝色系(`#667eea`)
|
||||
- 卡片样式:圆角20px,半透明背景
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
1. **音频播放失败**
|
||||
- 检查网络连接
|
||||
- 确认语音API密钥配置
|
||||
- 检查浏览器音频权限
|
||||
|
||||
2. **图片加载失败**
|
||||
- 确认图片路径正确
|
||||
- 检查文件权限
|
||||
- 查看控制台错误信息
|
||||
|
||||
3. **动画卡顿**
|
||||
- 降低动画复杂度
|
||||
- 检查设备性能
|
||||
- 考虑禁用某些效果
|
||||
|
||||
### 调试模式
|
||||
在浏览器控制台中启用详细日志:
|
||||
```javascript
|
||||
console.log('激活AI讲故事调试模式');
|
||||
```
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0 (2024-01-XX)
|
||||
- ✅ 完成基础功能开发
|
||||
- ✅ 集成虚拟猫头鹰老师
|
||||
- ✅ 添加语音控制功能
|
||||
- ✅ 实现响应式设计
|
||||
- ✅ 提供5个示例故事
|
||||
|
||||
## 技术支持
|
||||
|
||||
如需技术支持或功能建议,请联系开发团队。
|
||||
|
||||
---
|
||||
|
||||
**享受AI讲故事的美好时光!** 🎉📚✨
|
||||
@@ -1,108 +0,0 @@
|
||||
# AI讲故事页面 - 浅色主题变更
|
||||
|
||||
## 🌅 主题变更概述
|
||||
|
||||
成功将AI讲故事页面从深色渐变主题更改为清新的浅色系列主题,提升了页面的明亮度和可读性。
|
||||
|
||||
## 🎨 主要变更内容
|
||||
|
||||
### 1. 页面背景
|
||||
**变更前:** 深蓝紫色渐变 `#667eea → #764ba2`
|
||||
**变更后:** 浅蓝色系渐变 `#f0f9ff → #e0f2fe → #f8fafc`
|
||||
|
||||
### 2. 文字颜色
|
||||
- **标题文字:** 从白色改为深蓝色 `#0f172a`
|
||||
- **描述文字:** 从半透明白色改为灰色 `#64748b`
|
||||
- **文字阴影:** 从黑色阴影改为蓝色系阴影 `rgba(14, 165, 233, 0.2)`
|
||||
|
||||
### 3. 筛选按钮
|
||||
**变更前:** 白色半透明背景
|
||||
**变更后:**
|
||||
- 背景:白色半透明 `rgba(255, 255, 255, 0.8)`
|
||||
- 边框:蓝色系 `rgba(56, 189, 248, 0.3)`
|
||||
- 文字:蓝色 `#0369a1`
|
||||
- 悬停效果:浅蓝背景 `rgba(56, 189, 248, 0.1)`
|
||||
|
||||
### 4. 故事卡片
|
||||
- **阴影:** 从黑色切换为蓝色系阴影 `rgba(14, 165, 233, 0.15)`
|
||||
- **边框:** 添加浅灰色边框 `rgba(248, 250, 252, 0.8)`
|
||||
- **悬停效果:** 蓝色边框 `rgba(56, 189, 248, 0.3)`
|
||||
|
||||
### 5. 故事封面
|
||||
**变更前:** 红绿渐变 `#ff6b6b → #4ecdc4`
|
||||
**变更后:** 清新蓝绿渐变 `#e0f2fe → #bae6fd → #a7f3d0`
|
||||
|
||||
### 6. 按钮样式
|
||||
- **主按钮:** 蓝色渐变 `#0284c7 → #0369a1`
|
||||
- **次按钮:** 蓝色边框和文字 `#0284c7`
|
||||
- **悬停效果:** 蓝色阴影 `rgba(14, 165, 233, 0.3)`
|
||||
|
||||
### 7. 阅读器头部
|
||||
**变更前:** 深紫蓝渐变 `#667eea → #764ba2`
|
||||
**变更后:** 蓝色渐变 `#0284c7 → #0891b2`
|
||||
|
||||
### 8. 语音控制区域
|
||||
- **背景:** 从黑色改为白色半透明 `rgba(255, 255, 255, 0.9)`
|
||||
- **阴影:** 蓝色系阴影 `rgba(14, 165, 233, 0.2)`
|
||||
- **按钮:** 绿色渐变 `#10b981 → #059669`
|
||||
|
||||
### 9. 加载动画
|
||||
- **边框:** 蓝色系 `rgba(14, 165, 233, 0.3)`
|
||||
- **顶部颜色:** 蓝色 `#0284c7`
|
||||
|
||||
## 🌈 色彩方案
|
||||
|
||||
### 主要色彩
|
||||
- **深蓝:** `#0284c7` - 主色调
|
||||
- **浅蓝:** `#89e3ff` - 辅助色
|
||||
- **绿色:** `#10b981` - 强调色
|
||||
- **深灰:** `#64748b` - 文字色
|
||||
- **浅灰:** `#f8fafc` - 背景色
|
||||
|
||||
### 渐变方案
|
||||
1. **页面背景:** `#f0f9ff → #e0f2fe → #f8fafc`
|
||||
2. **卡片背景:** `#e0f2fe → #bae6fd → #a7f3d0`
|
||||
3. **按钮背景:** `#0284c7 → #0369a1`
|
||||
4. **头部背景:** `#0284c7 → #0891b2`
|
||||
|
||||
## 📱 用户体验提升
|
||||
|
||||
### 优势
|
||||
1. **更好的可读性** - 浅色背景提高文字对比度
|
||||
2. **护眼效果** - 减少强对比,更适合长时间阅读
|
||||
3. **清新感** - 浅色系给人更舒适、清新的感觉
|
||||
4. **现代化** - 符合当前主流设计趋势
|
||||
|
||||
### 适用场景
|
||||
- 白天使用更舒适
|
||||
- 适合儿童使用,不会过于刺激
|
||||
- 专业教育环境
|
||||
- 长时间阅读场景
|
||||
|
||||
## 🔧 技术细节
|
||||
|
||||
### CSS变量 (可扩展)
|
||||
如需进一步自定义,可以考虑定义CSS变量:
|
||||
```css
|
||||
:root {
|
||||
--primary-color: #0284c7;
|
||||
--secondary-color: #10b981;
|
||||
--background-light: #f0f9ff;
|
||||
--text-dark: #0f172a;
|
||||
--shadow-color: rgba(14, 165, 233, 0.2);
|
||||
}
|
||||
```
|
||||
|
||||
### 响应式支持
|
||||
所有变更都保持了响应式设计,在移动设备上同样适用。
|
||||
|
||||
## 🚀 后续优化建议
|
||||
|
||||
1. **主题切换** - 可考虑添加深色/浅色主题切换功能
|
||||
2. **用户偏好** - 记录用户主题偏好设置
|
||||
3. **更多色彩选项** - 提供多种浅色主题供选择
|
||||
4. **无障碍改进** - 进一步优化对比度以适应无障碍需求
|
||||
|
||||
---
|
||||
|
||||
**现在您可以访问 `http://localhost:8000/html/ai_storytelling.html` 查看全新的浅色主题!** ✨🌈📚
|
||||
@@ -1,207 +0,0 @@
|
||||
# 荣光课堂前端系统
|
||||
|
||||
## 项目简介
|
||||
|
||||
荣光课堂前端系统是一个基于 HTML5、CSS3 和 JavaScript 的在线教育平台,支持课程学习、游戏互动和用户行为跟踪。
|
||||
|
||||
## 新增功能
|
||||
|
||||
### 1. 后端集成
|
||||
|
||||
- 与 Spring Boot 后端 API 完全集成
|
||||
- 支持用户登录、课程数据同步、访问记录和游戏统计
|
||||
|
||||
### 2. 用户管理
|
||||
|
||||
- 用户登录/登出功能
|
||||
- 用户状态持久化
|
||||
- 用户信息显示
|
||||
|
||||
### 3. 数据管理
|
||||
|
||||
- 自动从后端加载课程和游戏数据
|
||||
- 本地数据备用方案
|
||||
- 数据同步和更新
|
||||
|
||||
### 4. 访问跟踪
|
||||
|
||||
- 自动记录用户访问课程、游戏和视频的行为
|
||||
- 记录访问时长和详细信息
|
||||
- 支持 IP 地址和用户代理记录
|
||||
|
||||
### 5. 游戏跟踪
|
||||
|
||||
- 记录游戏开始、结束和结果
|
||||
- 支持胜负、正确/错误答案记录
|
||||
- 记录得分、游戏时长和尝试次数
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
rg-09112127/
|
||||
├── html/ # HTML页面
|
||||
│ ├── indexHome.html # 首页
|
||||
│ ├── indexDetail.html # 课程导航页
|
||||
│ ├── courseHome.html # 课程主页
|
||||
│ └── play/ # 游戏页面
|
||||
│ └── 示例游戏.html # 示例游戏
|
||||
├── js/ # JavaScript文件
|
||||
│ ├── apiService.js # API服务类
|
||||
│ ├── dataManager.js # 数据管理器
|
||||
│ ├── userManager.js # 用户管理器
|
||||
│ ├── accessTracker.js # 访问跟踪器
|
||||
│ ├── gameTracker.js # 游戏跟踪器
|
||||
│ └── courseConfig.js # 课程配置(已更新)
|
||||
├── css/ # 样式文件
|
||||
│ └── userDisplay.css # 用户显示样式
|
||||
└── README.md # 说明文档
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 1. 启动后端服务
|
||||
|
||||
确保后端 Spring Boot 应用已启动,默认端口 8080。
|
||||
|
||||
### 2. 用户登录
|
||||
|
||||
- 点击页面右上角的"登录"按钮
|
||||
- 输入用户名和密码
|
||||
- 登录成功后显示用户信息
|
||||
|
||||
### 3. 课程学习
|
||||
|
||||
- 访问课程页面会自动记录访问行为
|
||||
- 观看视频会记录访问时长
|
||||
- 离开页面时自动结束访问跟踪
|
||||
|
||||
### 4. 游戏互动
|
||||
|
||||
- 开始游戏时自动记录游戏开始
|
||||
- 选择答案时记录尝试次数
|
||||
- 游戏结束时记录结果和得分
|
||||
|
||||
## API 集成
|
||||
|
||||
### 主要 API 接口
|
||||
|
||||
- `POST /api/users/login` - 用户登录
|
||||
- `GET /api/data/complete` - 获取完整数据
|
||||
- `POST /api/records/access` - 记录访问
|
||||
- `POST /api/records/game` - 记录游戏结果
|
||||
|
||||
### 使用示例
|
||||
|
||||
```javascript
|
||||
// 用户登录
|
||||
const result = await window.apiService.login("username", "password");
|
||||
|
||||
// 记录课程访问
|
||||
window.trackCourseAccess("l1s01");
|
||||
|
||||
// 记录游戏开始
|
||||
window.startGame(1, { gameType: "math_quiz" });
|
||||
|
||||
// 记录游戏胜利
|
||||
window.recordGameWin(100, { score: 100, time: 120 });
|
||||
|
||||
// 结束访问跟踪
|
||||
window.endAccess();
|
||||
```
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 后端 API 地址
|
||||
|
||||
在 `js/apiService.js` 中修改:
|
||||
|
||||
```javascript
|
||||
this.baseUrl = "http://localhost:8080/api";
|
||||
```
|
||||
|
||||
### 数据库连接
|
||||
|
||||
确保后端 `application.yml` 中的数据库配置正确:
|
||||
|
||||
```yaml
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://localhost:3306/rg_classroom
|
||||
username: root
|
||||
password: 123456
|
||||
```
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 1. 自动数据同步
|
||||
|
||||
- 页面加载时自动从后端获取最新数据
|
||||
- 支持本地数据备用方案
|
||||
- 实时更新课程和游戏列表
|
||||
|
||||
### 2. 智能访问跟踪
|
||||
|
||||
- 自动检测用户行为
|
||||
- 记录详细的访问信息
|
||||
- 支持多种访问类型(课程、游戏、视频)
|
||||
|
||||
### 3. 游戏统计
|
||||
|
||||
- 记录游戏胜负结果
|
||||
- 统计得分和游戏时长
|
||||
- 支持多次尝试记录
|
||||
|
||||
### 4. 用户状态管理
|
||||
|
||||
- 登录状态持久化
|
||||
- 自动恢复用户会话
|
||||
- 安全的登出功能
|
||||
|
||||
## 浏览器兼容性
|
||||
|
||||
- Chrome 60+
|
||||
- Firefox 55+
|
||||
- Safari 12+
|
||||
- Edge 79+
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 确保后端服务正常运行
|
||||
2. 用户需要登录后才能记录访问和游戏数据
|
||||
3. 网络异常时会使用本地数据作为备用
|
||||
4. 所有 API 调用都有错误处理机制
|
||||
|
||||
## 开发说明
|
||||
|
||||
### 添加新的游戏跟踪
|
||||
|
||||
```javascript
|
||||
// 在游戏开始时
|
||||
window.startGame(gameId, gameData);
|
||||
|
||||
// 在游戏过程中
|
||||
window.recordGameAttempt();
|
||||
|
||||
// 在游戏结束时
|
||||
window.recordGameWin(score, finalData);
|
||||
```
|
||||
|
||||
### 添加访问跟踪
|
||||
|
||||
```javascript
|
||||
// 开始访问跟踪
|
||||
window.trackCourseAccess(courseId);
|
||||
window.trackGameAccess(gameId);
|
||||
window.trackVideoAccess(courseId, videoId);
|
||||
|
||||
// 结束访问跟踪
|
||||
window.endAccess();
|
||||
```
|
||||
|
||||
### 自定义 API 调用
|
||||
|
||||
```javascript
|
||||
// 使用API服务
|
||||
const result = await window.apiService.get("/courses");
|
||||
const user = await window.apiService.post("/users", userData);
|
||||
```
|
||||
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 247 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 940 KiB |
|
Before Width: | Height: | Size: 806 KiB |
|
Before Width: | Height: | Size: 754 KiB |
|
Before Width: | Height: | Size: 922 KiB |
|
Before Width: | Height: | Size: 525 KiB |
|
Before Width: | Height: | Size: 539 KiB |
|
Before Width: | Height: | Size: 414 KiB |
|
Before Width: | Height: | Size: 570 KiB |
|
Before Width: | Height: | Size: 957 KiB |
|
Before Width: | Height: | Size: 556 KiB |
|
Before Width: | Height: | Size: 602 KiB |
|
Before Width: | Height: | Size: 773 KiB |
|
Before Width: | Height: | Size: 825 KiB |
|
Before Width: | Height: | Size: 838 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 283 B |
|
Before Width: | Height: | Size: 512 B |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 961 KiB |
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 141 B |
|
Before Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 498 KiB |
|
Before Width: | Height: | Size: 205 KiB |