初始提交
This commit is contained in:
162
rg-09112127/js/gameDataLogger.js
Normal file
162
rg-09112127/js/gameDataLogger.js
Normal file
@@ -0,0 +1,162 @@
|
||||
/**
|
||||
* 游戏数据记录器 - 为所有游戏提供统一的数据记录功能
|
||||
*/
|
||||
class GameDataLogger {
|
||||
constructor() {
|
||||
this.gameStats = {
|
||||
totalClicks: 0,
|
||||
correctAnswers: 0,
|
||||
incorrectAnswers: 0,
|
||||
totalQuestions: 0,
|
||||
startTime: null,
|
||||
gameType: null
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化游戏数据记录
|
||||
*/
|
||||
initGame(gameType, totalQuestions = 0) {
|
||||
this.gameStats = {
|
||||
totalClicks: 0,
|
||||
correctAnswers: 0,
|
||||
incorrectAnswers: 0,
|
||||
totalQuestions: totalQuestions,
|
||||
startTime: Date.now(),
|
||||
gameType: gameType
|
||||
};
|
||||
|
||||
console.log('🎮 游戏数据记录器初始化');
|
||||
console.log('📊 游戏信息:', {
|
||||
游戏类型: gameType,
|
||||
总问题数: totalQuestions,
|
||||
开始时间: new Date().toLocaleString('zh-CN')
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录用户点击/选择
|
||||
*/
|
||||
logUserAction(actionType, actionData) {
|
||||
this.gameStats.totalClicks++;
|
||||
|
||||
console.log('👆 用户操作记录');
|
||||
console.log('📊 操作信息:', {
|
||||
操作类型: actionType,
|
||||
操作次数: this.gameStats.totalClicks,
|
||||
操作时间: new Date().toLocaleString('zh-CN'),
|
||||
游戏时长: this.getGameDuration() + '秒'
|
||||
});
|
||||
console.log('🎯 操作详情:', actionData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录问题回答
|
||||
*/
|
||||
logQuestionAnswer(questionData, userAnswer, isCorrect, score = 0) {
|
||||
if (isCorrect) {
|
||||
this.gameStats.correctAnswers++;
|
||||
} else {
|
||||
this.gameStats.incorrectAnswers++;
|
||||
}
|
||||
|
||||
console.log('❓ 问题回答记录');
|
||||
console.log('📊 问题信息:', {
|
||||
问题内容: questionData.question || '未知问题',
|
||||
问题编号: questionData.questionNumber || '未知',
|
||||
选项: questionData.options || '未知',
|
||||
正确答案: questionData.correct || '未知',
|
||||
用户答案: userAnswer,
|
||||
是否正确: isCorrect ? '✅ 正确' : '❌ 错误',
|
||||
得分: score
|
||||
});
|
||||
console.log('📈 游戏统计:', {
|
||||
总点击次数: this.gameStats.totalClicks,
|
||||
正确次数: this.gameStats.correctAnswers,
|
||||
错误次数: this.gameStats.incorrectAnswers,
|
||||
正确率: this.getAccuracy() + '%',
|
||||
平均得分: this.getAverageScore() + '分'
|
||||
});
|
||||
console.log('⏰ 时间信息:', {
|
||||
回答时间: new Date().toLocaleString('zh-CN'),
|
||||
游戏时长: this.getGameDuration() + '秒'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录游戏结果
|
||||
*/
|
||||
logGameResult(result, finalScore, gameData) {
|
||||
console.log('🏁 游戏结果记录');
|
||||
console.log('📊 最终统计:', {
|
||||
游戏类型: this.gameStats.gameType,
|
||||
游戏结果: result,
|
||||
最终得分: finalScore,
|
||||
总点击次数: this.gameStats.totalClicks,
|
||||
正确次数: this.gameStats.correctAnswers,
|
||||
错误次数: this.gameStats.incorrectAnswers,
|
||||
正确率: this.getAccuracy() + '%',
|
||||
游戏时长: this.getGameDuration() + '秒',
|
||||
结束时间: new Date().toLocaleString('zh-CN')
|
||||
});
|
||||
|
||||
if (gameData) {
|
||||
console.log('🎯 游戏详情:', gameData);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取游戏时长(秒)
|
||||
*/
|
||||
getGameDuration() {
|
||||
if (!this.gameStats.startTime) return 0;
|
||||
return Math.floor((Date.now() - this.gameStats.startTime) / 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取正确率
|
||||
*/
|
||||
getAccuracy() {
|
||||
const total = this.gameStats.correctAnswers + this.gameStats.incorrectAnswers;
|
||||
if (total === 0) return 0;
|
||||
return ((this.gameStats.correctAnswers / total) * 100).toFixed(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取平均得分
|
||||
*/
|
||||
getAverageScore() {
|
||||
const total = this.gameStats.correctAnswers + this.gameStats.incorrectAnswers;
|
||||
if (total === 0) return 0;
|
||||
return (this.gameStats.correctAnswers * 10 / total).toFixed(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取游戏统计
|
||||
*/
|
||||
getStats() {
|
||||
return {
|
||||
...this.gameStats,
|
||||
gameDuration: this.getGameDuration(),
|
||||
accuracy: this.getAccuracy(),
|
||||
averageScore: this.getAverageScore()
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置统计
|
||||
*/
|
||||
reset() {
|
||||
this.gameStats = {
|
||||
totalClicks: 0,
|
||||
correctAnswers: 0,
|
||||
incorrectAnswers: 0,
|
||||
totalQuestions: 0,
|
||||
startTime: null,
|
||||
gameType: null
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// 创建全局游戏数据记录器实例
|
||||
window.gameDataLogger = new GameDataLogger();
|
||||
Reference in New Issue
Block a user