// 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