/
Odisseywolf
/
BioSphere
Обзор
Документация
Войти
/
Odisseywolf
/
BioSphere
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
difficulty_system/difficulty_levels.py
177 строк
7 KB
Odisseywolf
Create: difficulty_levels.py, adaptive_engine.py, difficulty_manager.py, schema.sql, common_species.sql, queries.py, Update: ecosystem_engine.py
09 июн 2026, 14:42
Верифицирован
09 июн 2026, 14:42
e0bb572
Код
Авторство
О чём код?
# FILE: difficulty_system/difficulty_levels.py """ 7 уровней сложности BioSphere Уровень 1 (Начальный): - Младший/средний школьник - Подсказки: "Добавьте дерево, оно нужно для кислорода" - Скрытые параметры: pH почвы, микроорганизмы, сезонность - Доступно: 1–2 биома (луг, пруд) - Карты: частично заселены (автобаланс) Уровень 5 (Продвинутый): - Студент биофака - Видны: pH, ветер, seasonality - Скрытые: микрофлора, химические циклы (S, Fe) - Доступно: ~1000 видов из 10 биомов - Карты: пустые или слабозаселённые Уровень 7 (Профессиональный): - Профессор биологии / системный эколог - Все параметры видны - Все 2.2 млн видов (из GBIF) в каталоге - 100% контроль за экосистемой - Карты: полностью пустые """ from dataclasses import dataclass from typing import List, Dict, Optional from species_db.manager import SpeciesDBManager @dataclass class DifficultyLevel: id: int name: str target_audience: str hidden_params: List[str] # Скрытые параметры (не показываются) visible_params: List[str] # Показываемые available_biomes: List[str] # Доступные биомы species_access: str # "limited" | "full" hints_enabled: bool # Подсказки включены? auto_correction: bool # Автокоррекция ошибок starting_map_state: str # "balanced" | "empty" | "partially_empty" # Основные конфиги DIFFICULTY_LEVELS = [ DifficultyLevel( id=1, name="Начальный", target_audience="Школьники 5–8 классов", hidden_params=["soil_pH", "microbiome", "soil_organic_M", "seasonality", "water_turbidity"], visible_params=["temp", "humidity", "co2", "o2", "elevation"], available_biomes=["temperate_forest", "grassland", "freshwater"], species_access="limited", hints_enabled=True, auto_correction=True, starting_map_state="balanced" ), DifficultyLevel( id=2, name="Базовый", target_audience="Школьники 9–11 классов", hidden_params=["microbiome", "soil_organic_M", "seasonality"], visible_params=["temp", "humidity", "co2", "o2", "soil_pH", "wind_speed", "elevation"], available_biomes=["temperate_forest", "grassland", "freshwater", "boreal_forest"], species_access="moderate", hints_enabled=True, auto_correction=True, starting_map_state="partially_empty" ), DifficultyLevel( id=3, name="Средний", target_audience="Студенты биофака", hidden_params=["soil_organic_M", "seasonality"], visible_params=[ "temp", "humidity", "co2", "o2", "soil_pH", "wind_speed", "water_turbidity", "nutrient_cycles_N", "nutrient_cycles_P" ], available_biomes=[ "temperate_forest", "grassland", "freshwater", "boreal_forest", "mediterranean", "desert_edge" ], species_access="moderate", hints_enabled=True, auto_correction=True, starting_map_state="partially_empty" ), DifficultyLevel( id=4, name="Продвинутый", target_audience="Биологи-исследователи", hidden_params=["microbiome", "seasonality", "pollution_factors"], visible_params=[ "temp", "humidity", "co2", "o2", "soil_pH", "wind_speed", "water_turbidity", "nutrient_cycles_N", "nutrient_cycles_P", "pollution_factors", "light_availability" ], available_biomes=[ "temperate_forest", "grassland", "freshwater", "boreal_forest", "mediterranean", "desert_edge", "tundra", "alpine" ], species_access="broad", hints_enabled=False, auto_correction=True, starting_map_state="empty" ), DifficultyLevel( id=5, name="Эксперт", target_audience="Магистры, докторанты", hidden_params=["microbiome", "pollution_factors", "light_availability"], visible_params=[ "temp", "humidity", "co2", "o2", "soil_pH", "wind_speed", "water_turbidity", "nutrient_cycles_N", "nutrient_cycles_P", "light_availability", "microbiome_summary", "viral_load" ], available_biomes=[ "all_boreal", "all_temperate", "all_terraces", "all_wetlands" ], species_access="broad", hints_enabled=False, auto_correction=False, starting_map_state="empty" ), DifficultyLevel( id=6, name="Системный", target_audience="Системные экологи, научные работники", hidden_params=["microbiome_detailed", "viral_load"], visible_params=[ "temp", "humidity", "co2", "o2", "soil_pH", "wind_speed", "water_turbidity", "nutrient_cycles_N", "nutrient_cycles_P", "light_availability", "microbiome_summary", "genetic_diversity" ], available_biomes=[ "all_global" ], species_access="full", hints_enabled=False, auto_correction=False, starting_map_state="empty" ), DifficultyLevel( id=7, name="Максимальный (Professional)", target_audience="Профессора биологии, интегральные экологи", hidden_params=[], visible_params=[ "all_parameters" ], available_biomes=["all_global"], species_access="full", hints_enabled=False, auto_correction=False, starting_map_state="empty" ), ] # Вспомогательные функции def get_difficulty_level(level_id: int) -> DifficultyLevel: for lvl in DIFFICULTY_LEVELS: if lvl.id == level_id: return lvl raise ValueError(f"Нет уровня сложности {level_id}") def get_species_access(level_id: int, db: SpeciesDBManager) -> List[dict]: """Получить доступные виды в зависимости от уровня""" lvl = get_difficulty_level(level_id) if lvl.species_access == "limited": # ТОЛЬКО для школьного уровня return db.get_species_for_school() elif lvl.species_access == "moderate": # Для студентов return db.get_species_for_university() else: # Для профессоров return db.get_all_species()