// User Progress Tracking System
class UserProgressTracker {
constructor() {
// Define learning levels
this.levels = {
'A1': {
minPoints: 0,
badge: '🌱 Beginner',
description: 'Starting your English journey!'
},
'A2': {
minPoints: 500,
badge: '🌿 Elementary',
description: 'Basic communication skills'
},
'B1': {
minPoints: 1000,
badge: '🌳 Intermediate',
description: 'Confident in most situations'
},
'B2': {
minPoints: 1500,
badge: '🌲 Advanced',
description: 'Advanced language skills'
}
};
// Initialize or load user progress
this.initializeProgress();
}
// Initialize progress from local storage
initializeProgress() {
const savedProgress = localStorage.getItem('englishLearningProgress');
if (savedProgress) {
this.userData = JSON.parse(savedProgress);
} else {
this.userData = {
totalPoints: 0,
currentLevel: 'A1',
completedExercises: []
};
}
}
// Add points for completed exercise
addExercisePoints(exerciseId, points = 5) {
// Prevent duplicate exercise counting
if (this.userData.completedExercises.includes(exerciseId)) {
console.log('Exercise already completed');
return false;
}
// Add points
this.userData.totalPoints += points;
this.userData.completedExercises.push(exerciseId);
// Update level
this.updateCurrentLevel();
// Save progress
this.saveProgress();
// Show achievement
this.showAchievement(points);
return true;
}
// Determine current level based on points
updateCurrentLevel() {
for (let levelKey in this.levels) {
if (this.userData.totalPoints >= this.levels[levelKey].minPoints) {
this.userData.currentLevel = levelKey;
}
}
}
// Save progress to local storage
saveProgress() {
localStorage.setItem('englishLearningProgress', JSON.stringify(this.userData));
}
// Get current progress details
getProgress