初始提交
This commit is contained in:
153
rg-09112127/js/gameVirtualTeacher.js
Normal file
153
rg-09112127/js/gameVirtualTeacher.js
Normal file
@@ -0,0 +1,153 @@
|
||||
/**
|
||||
* 游戏虚拟老师集成脚本
|
||||
* 为游戏页面提供虚拟老师功能的通用集成
|
||||
*/
|
||||
class GameVirtualTeacher {
|
||||
constructor() {
|
||||
this.isInitialized = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化虚拟老师集成
|
||||
*/
|
||||
async init(gameInfo = {}) {
|
||||
if (this.isInitialized) return;
|
||||
|
||||
try {
|
||||
// 等待虚拟老师模块加载
|
||||
if (!window.virtualTeacher) {
|
||||
console.warn('虚拟老师模块未加载,跳过初始化');
|
||||
return;
|
||||
}
|
||||
|
||||
// 初始化虚拟老师
|
||||
await window.virtualTeacher.init();
|
||||
console.log('🦉 游戏虚拟老师集成初始化成功');
|
||||
|
||||
// 不立即播放游戏介绍,由游戏页面控制播放时机
|
||||
this.gameIntro = gameInfo.intro;
|
||||
|
||||
this.isInitialized = true;
|
||||
} catch (error) {
|
||||
console.error('游戏虚拟老师集成初始化失败:', error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏开始
|
||||
*/
|
||||
gameStart(gameName, gameData = {}) {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
// 重置统计
|
||||
window.virtualTeacher.resetStats();
|
||||
|
||||
// 游戏开始提示
|
||||
window.virtualTeacher.gameStart(gameName);
|
||||
|
||||
// 播放游戏介绍(如果有的话)
|
||||
if (this.gameIntro) {
|
||||
setTimeout(() => {
|
||||
window.virtualTeacher.speak(this.gameIntro);
|
||||
}, 500);
|
||||
}
|
||||
|
||||
console.log('🦉 虚拟老师:游戏开始 -', gameName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示题目
|
||||
*/
|
||||
showQuestion(questionText, questionNumber = 1, totalQuestions = 1) {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
// 停止当前语音
|
||||
window.virtualTeacher.stopAllSpeech();
|
||||
|
||||
// 延迟播放题目语音
|
||||
setTimeout(() => {
|
||||
const fullQuestionText = `第${questionNumber}题:${questionText}`;
|
||||
window.virtualTeacher.readQuestion(fullQuestionText);
|
||||
}, 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录正确答案
|
||||
*/
|
||||
recordCorrect() {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
// 停止当前语音
|
||||
window.virtualTeacher.stopAllSpeech();
|
||||
|
||||
// 延迟播放反馈语音
|
||||
setTimeout(() => {
|
||||
window.virtualTeacher.recordCorrect();
|
||||
}, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录错误答案
|
||||
*/
|
||||
recordIncorrect() {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
// 停止当前语音
|
||||
window.virtualTeacher.stopAllSpeech();
|
||||
|
||||
// 延迟播放反馈语音
|
||||
setTimeout(() => {
|
||||
window.virtualTeacher.recordIncorrect();
|
||||
}, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏结束
|
||||
*/
|
||||
gameEnd() {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
// 立即停止所有语音
|
||||
window.virtualTeacher.stopAllSpeech();
|
||||
|
||||
// 延迟一点再播放游戏结束语音
|
||||
setTimeout(() => {
|
||||
window.virtualTeacher.gameEnd();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止所有语音
|
||||
*/
|
||||
stopAllSpeech() {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
window.virtualTeacher.stopAllSpeech();
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义语音
|
||||
*/
|
||||
speak(text, options = {}) {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
window.virtualTeacher.speak(text, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变表情
|
||||
*/
|
||||
changeExpression(expression) {
|
||||
if (!window.virtualTeacher || !this.isInitialized) return;
|
||||
|
||||
window.virtualTeacher.changeExpression(expression);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建全局实例
|
||||
window.gameVirtualTeacher = new GameVirtualTeacher();
|
||||
|
||||
// 导出类
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
module.exports = GameVirtualTeacher;
|
||||
}
|
||||
Reference in New Issue
Block a user