Что такое система уровней?
Система уровней — это способ отражения долгосрочного прогресса
игрока. Она превращает накопленные очки опыта в понятные этапы
развития, каждый из которых дает игроку чувство достижения и новые
возможности.
Преимущества системы уровней:
- Дает долгосрочную мотивацию
- Создает ощущение роста и развития
- Позволяет открывать новые функции
- Показывает статус игрока другим
Класс системы уровней
class LevelSystem { constructor() { this.level = 1; this.xp = 0;
this.levelTitles = [ 'Новичок', 'Ученик', 'Исследователь', 'Знаток',
'Эксперт', 'Мастер', 'Гуру', 'Легенда' ]; } // Рассчитать XP,
необходимый для уровня getXpForLevel(level) { // Экспоненциальная
формула: каждый уровень требует больше XP return Math.floor(100 *
Math.pow(level, 1.5)); } // Получить текущий уровень по XP
getLevelFromXp(xp) { let level = 1; while (this.getXpForLevel(level +
1) <= xp) { level++; } return level; } // Добавить опыт addXp(amount)
{ const oldLevel = this.level; this.xp += amount; this.level =
this.getLevelFromXp(this.xp); // Проверяем повышение уровня if
(this.level > oldLevel) { this.onLevelUp(this.level, oldLevel); return
true; // Произошло повышение } return false; } // Получить прогресс до
следующего уровня getLevelProgress() { const currentLevelXp =
this.getXpForLevel(this.level); const nextLevelXp =
this.getXpForLevel(this.level + 1); const progressXp = this.xp -
currentLevelXp; const neededXp = nextLevelXp - currentLevelXp; return
{ current: progressXp, needed: neededXp, percentage: (progressXp /
neededXp) * 100 }; } // Получить название уровня getLevelTitle() {
const index = Math.min(this.level - 1, this.levelTitles.length - 1);
return this.levelTitles[index]; } // Обработка повышения уровня
onLevelUp(newLevel, oldLevel) { console.log(`Поздравляем! Уровень
повышен с ${oldLevel} до ${newLevel}!`);
this.showLevelUpAnimation(newLevel); } showLevelUpAnimation(level) {
// Создаем анимацию повышения уровня const popup =
document.createElement('div'); popup.className = 'achievement-popup';
popup.innerHTML = `
🎉
Повышение уровня!
Уровень ${level}
"${this.getLevelTitle()}"
`; document.body.appendChild(popup); setTimeout(() =>
popup.classList.add('show'), 100); setTimeout(() => {
popup.classList.remove('show'); setTimeout(() =>
document.body.removeChild(popup), 500); }, 3000); } }
🎯 Практическое задание
Улучшите систему уровней:
-
Добавьте разные формулы расчета XP (линейная, экспоненциальная)
- Создайте систему наград за достижение определенных уровней
- Добавьте престиж-систему (сброс уровня с бонусами)
- Реализуйте сохранение прогресса в localStorage
Подсказка: Сохранение прогресса
// Сохранение в localStorage saveProgress() { const data = { level:
this.level, xp: this.xp, timestamp: Date.now() };
localStorage.setItem('playerProgress', JSON.stringify(data)); } //
Загрузка из localStorage loadProgress() { const saved =
localStorage.getItem('playerProgress'); if (saved) { const data =
JSON.parse(saved); this.level = data.level; this.xp = data.xp;
this.updateDisplay(); } }