#!/usr/bin/env python3 """ ๐Ÿชช ENTWICKLER-PROFIL & GAMIFICATION PASS ๐Ÿชช =========================================== Fรผhre diesen Befehl im Terminal aus, um deinen aktuellen Level, deine XP, deinen Fortschrittsbalken und deine Trophรคen anzuzeigen: python3 profil.py """ import sys from gamification import GamificationManager, BADGES_KATALOG # ANSI Farbcodes fรผr ansprechende Terminal-Optik C_RESET = "\033[0m" C_BOLD = "\033[1m" C_CYAN = "\033[36m" C_GREEN = "\033[32m" C_YELLOW = "\033[33m" C_BLUE = "\033[34m" C_MAGENTA = "\033[35m" C_RED = "\033[31m" def erstelle_balken(prozent: int, breite: int = 30) -> str: """Erzeugt einen visuellen Unicode-Fortschrittsbalken.""" gefuellt = int((prozent / 100) * breite) leer = breite - gefuellt return f"{C_GREEN}{'โ–ˆ' * gefuellt}{C_RESET}{'โ–‘' * leer}" def main(): manager = GamificationManager() state = manager.state xp = state.get("xp", 0) lvl_info = manager.get_level_info(xp) geloest = state.get("geloeste_kapitel", []) unlocked_badges = set(state.get("freigeschaltete_badges", [])) streak = state.get("streak_tage", 1) name = state.get("spieler_name", "Python-Entwicklerin") titel = lvl_info["titel"] rang = lvl_info["rang"] tests_count = state.get("bestandene_tests", 0) kapitel_str = f"{len(geloest)} / 27 Kapiteln gelรถst ({tests_count} Tests)" streak_str = f"{streak} Tag(e) in Folge aktiv!" print() print(f"{C_CYAN}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} {C_BOLD}๐ŸŽฎ PYTHON ENTWICKLER-PROFIL & MEISTERPASS{C_RESET} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} ๐Ÿ‘ค {C_BOLD}Entwicklerin:{C_RESET} {name:<48} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} ๐Ÿ… {C_BOLD}Titel:{C_RESET} {titel:<48} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} โญ {C_BOLD}Rang:{C_RESET} {rang:<48} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} ๐Ÿ”ฅ {C_BOLD}Lern-Streak:{C_RESET} {streak_str:<48} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} ๐Ÿ“š {C_BOLD}Fortschritt:{C_RESET} {kapitel_str:<48} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} ๐Ÿ“ˆ {C_BOLD}LEVEL {lvl_info['level']:2d} FORTSCHRITT:{C_RESET} {C_CYAN}โ•‘{C_RESET}") balken = erstelle_balken(lvl_info["prozent"], breite=35) xp_text = f"{xp} / {lvl_info['naechste_stufe_xp']} XP ({lvl_info['prozent']}%)" print(f"{C_CYAN}โ•‘{C_RESET} [{balken}] {xp_text:<17} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} ๐Ÿ† {C_BOLD}TROPHร„ENRAUM ({len(unlocked_badges)} von {len(BADGES_KATALOG)} freigeschaltet):{C_RESET} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•Ÿโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ข{C_RESET}") # Badges auflisten for b_id, badge in BADGES_KATALOG.items(): if b_id in unlocked_badges: status = f"{C_GREEN}[FREIGESCHALTET]{C_RESET}" icon = badge["icon"] name_colored = f"{C_YELLOW}{badge['name']}{C_RESET}" else: status = f"{C_RESET}[GESPERRT ๐Ÿ”’]{C_RESET}" icon = "๐Ÿ”’" name_colored = f"{badge['name']}" print(f"{C_CYAN}โ•‘{C_RESET} {icon} {name_colored:<36} {status:>24} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•‘{C_RESET} โ†ณ {badge['desc']:<63} {C_CYAN}โ•‘{C_RESET}") print(f"{C_CYAN}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•{C_RESET}") print(f"๐Ÿ’ก {C_BOLD}Tipp:{C_RESET} Lรถse weitere Aufgaben in 'aufgabe.py' und teste sie mit 'python3 test_all.py'!") print() if __name__ == "__main__": main()