/** * 游戏虚拟老师集成脚本 * 为游戏页面提供虚拟老师功能的通用集成 */ 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; }