class_name Woerter ## Alltagswörter, mit denen jemand sich selbst beschreibt -- und was das Spiel ## daraus schließt. Vorne Wörter, die jeder an sich erkennt; hinten das Modell. ## ## Jedes Wort zieht an mehreren Stellen: Ursachen (was den Traum bremst), ## Blocker (was im Tag auftaucht), Klemmen (was in Momenten aufbricht) und ## Verhalten (wie der Mensch auf Techniken reagiert). Ein Wort kann an einer ## Stelle helfen und an einer anderen schaden -- so ist das bei Menschen. ## Die acht Verhaltenswerte, -2 bis +2: ## einrichten wie leicht ein System sich setzen lässt ## guete wie gut ein gesetztes System trägt ## abwehr wie stark die Abwehr nach einem Fehlschlag ist ## momente wie oft Momente aufbrechen ## dauer wie lange sie dauern ## tempo wie schnell der Traum von sich aus vorankommt ## sozial wie gut soziale Techniken greifen ## sichtbar wie schnell man ihm ansieht, was dahintersteckt const VERHALTEN := ["einrichten", "guete", "abwehr", "momente", "dauer", "tempo", "sozial", "sichtbar"] const GRUPPEN := { "arbeit": "Arbeitsweise", "menschen": "Mit anderen", "gefuehl": "Gefühl", "energie": "Energie", "selbst": "Selbstbild", } static var LISTE: Dictionary = { # --- Arbeitsweise "aufschiebend": {"name": "aufschiebend", "gruppe": "arbeit", "ursachen": {"anfang": 2}, "blocker": ["putzflucht", "kaffee"], "verhalten": {"einrichten": -1}}, "perfektionistisch": {"name": "perfektionistisch", "gruppe": "arbeit", "ursachen": {"halt": 1, "anfang": 1}, "blocker": ["perfekt"], "probleme": {"perfektionismus": 2}, "verhalten": {"guete": 1, "abwehr": 1}}, "gruendlich": {"name": "gründlich", "gruppe": "arbeit", "ursachen": {"anfang": 1}, "blocker": ["recherche"], "verhalten": {"guete": 1}}, "chaotisch": {"name": "chaotisch", "gruppe": "arbeit", "ursachen": {"halt": 1}, "blocker": ["plan_neu"], "probleme": {"ueberforderung": 1}, "verhalten": {"guete": -1}}, "ordentlich": {"name": "ordentlich", "gruppe": "arbeit", "ursachen": {"anfang": 1}, "blocker": ["liste", "mails"], "verhalten": {"guete": 1}}, "sprunghaft": {"name": "sprunghaft", "gruppe": "arbeit", "ursachen": {"halt": 2}, "blocker": ["umschalten"], "verhalten": {"guete": -1, "momente": 1}}, "ablenkbar": {"name": "ablenkbar", "gruppe": "arbeit", "ursachen": {"halt": 1, "zeit": 1}, "blocker": ["scrollen", "spielen"], "probleme": {"unruhe": 1}}, "diszipliniert": {"name": "diszipliniert", "gruppe": "arbeit", "verhalten": {"guete": 1, "einrichten": 1, "tempo": 1}}, "ehrgeizig": {"name": "ehrgeizig", "gruppe": "arbeit", "probleme": {"stress": 1}, "verhalten": {"tempo": 1, "momente": 1}}, "bequem": {"name": "bequem", "gruppe": "arbeit", "ursachen": {"kraft": 1, "anfang": 1}, "blocker": ["doesen", "bestellen"]}, "zielstrebig": {"name": "zielstrebig", "gruppe": "arbeit", "verhalten": {"tempo": 1, "einrichten": 1}}, "unentschlossen": {"name": "unentschlossen", "gruppe": "arbeit", "ursachen": {"anfang": 1}, "blocker": ["liste", "plan_neu"], "probleme": {"ueberforderung": 1}}, "ungeduldig": {"name": "ungeduldig", "gruppe": "arbeit", "probleme": {"stress": 1}, "verhalten": {"abwehr": 1, "dauer": -1}}, "geduldig": {"name": "geduldig", "gruppe": "arbeit", "verhalten": {"abwehr": -1, "dauer": 1}}, "neugierig": {"name": "neugierig", "gruppe": "arbeit", "blocker": ["recherche", "umschalten"], "verhalten": {"einrichten": 1}}, "verbissen": {"name": "verbissen", "gruppe": "arbeit", "probleme": {"stress": 1}, "verhalten": {"abwehr": 1, "tempo": 1}}, "spontan": {"name": "spontan", "gruppe": "arbeit", "ursachen": {"halt": 1}, "verhalten": {"momente": 1}}, "pflichtbewusst": {"name": "pflichtbewusst", "gruppe": "arbeit", "ursachen": {"zeit": 1}, "blocker": ["ueberstunden", "jasagen"], "verhalten": {"guete": 1}}, # --- Mit anderen "gesellig": {"name": "gesellig", "gruppe": "menschen", "ursachen": {"zeit": 1}, "verhalten": {"sozial": 1, "sichtbar": 1}}, "zurueckgezogen": {"name": "zurückgezogen", "gruppe": "menschen", "blocker": ["absage"], "probleme": {"einsamkeit": 2}, "verhalten": {"sozial": -1, "sichtbar": -1}}, "hilfsbereit": {"name": "hilfsbereit", "gruppe": "menschen", "ursachen": {"zeit": 2}, "blocker": ["jasagen"], "verhalten": {"sozial": 1}}, "konfliktscheu": {"name": "konfliktscheu", "gruppe": "menschen", "ursachen": {"zeit": 1}, "blocker": ["jasagen"], "probleme": {"angst": 1}, "verhalten": {"abwehr": -1}}, "stur": {"name": "stur", "gruppe": "menschen", "verhalten": {"abwehr": 2, "einrichten": -1}}, "nachgiebig": {"name": "nachgiebig", "gruppe": "menschen", "ursachen": {"zeit": 1}, "verhalten": {"abwehr": -1, "einrichten": 1}}, "misstrauisch": {"name": "misstrauisch", "gruppe": "menschen", "verhalten": {"einrichten": -1, "sozial": -1, "sichtbar": -1}}, "vertrauensvoll": {"name": "vertrauensvoll", "gruppe": "menschen", "verhalten": {"einrichten": 1, "sozial": 1}}, "harmoniebeduerftig": {"name": "harmoniebedürftig", "gruppe": "menschen", "ursachen": {"zeit": 1}, "blocker": ["jasagen"], "verhalten": {"abwehr": -1}}, "eigenbroetlerisch": {"name": "eigenbrötlerisch", "gruppe": "menschen", "probleme": {"einsamkeit": 1}, "verhalten": {"sozial": -1}}, "redselig": {"name": "redselig", "gruppe": "menschen", "blocker": ["klagen"], "verhalten": {"sichtbar": 1, "sozial": 1}}, "verschlossen": {"name": "verschlossen", "gruppe": "menschen", "probleme": {"einsamkeit": 1}, "verhalten": {"sichtbar": -2}}, # --- Gefühl "aengstlich": {"name": "ängstlich", "gruppe": "gefuehl", "blocker": ["nachrichten"], "probleme": {"angst": 2}, "verhalten": {"momente": 1}}, "gelassen": {"name": "gelassen", "gruppe": "gefuehl", "verhalten": {"momente": -1, "dauer": -1}}, "gruebelnd": {"name": "grüblerisch", "gruppe": "gefuehl", "ursachen": {"grund": 1}, "blocker": ["waelzen"], "probleme": {"selbstzweifel": 1}}, "reizbar": {"name": "reizbar", "gruppe": "gefuehl", "probleme": {"stress": 1}, "verhalten": {"momente": 1, "abwehr": 1}}, "optimistisch": {"name": "optimistisch", "gruppe": "gefuehl", "verhalten": {"tempo": 1, "dauer": -1}}, "pessimistisch": {"name": "pessimistisch", "gruppe": "gefuehl", "ursachen": {"grund": 2}, "blocker": ["klagen"], "verhalten": {"tempo": -1}}, "duennhaeutig": {"name": "dünnhäutig", "gruppe": "gefuehl", "probleme": {"angst": 1, "selbstzweifel": 1}, "verhalten": {"dauer": 1}}, "nachtragend": {"name": "nachtragend", "gruppe": "gefuehl", "verhalten": {"abwehr": 1}}, "heiter": {"name": "heiter", "gruppe": "gefuehl", "verhalten": {"momente": -1}}, "schwermuetig": {"name": "schwermütig", "gruppe": "gefuehl", "ursachen": {"grund": 1, "kraft": 1}, "probleme": {"erschoepfung": 1}, "verhalten": {"tempo": -1}}, # --- Energie "nachtaktiv": {"name": "nachtaktiv", "gruppe": "energie", "ursachen": {"kraft": 1}, "blocker": ["wach"], "probleme": {"erschoepfung": 1}}, "fruehaufsteher": {"name": "Frühaufsteher", "gruppe": "energie", "verhalten": {"einrichten": 1}}, "erschoepft": {"name": "erschöpft", "gruppe": "energie", "ursachen": {"kraft": 2}, "blocker": ["serie", "doesen"], "probleme": {"erschoepfung": 2}}, "rastlos": {"name": "rastlos", "gruppe": "energie", "blocker": ["kuehlschrank"], "probleme": {"unruhe": 2}, "verhalten": {"momente": 1}}, "genuegsam": {"name": "genügsam", "gruppe": "energie", "verhalten": {"dauer": -1}}, "bewegungsfaul": {"name": "bewegungsfaul", "gruppe": "energie", "ursachen": {"kraft": 1}, "blocker": ["serie", "bestellen"]}, "sportlich": {"name": "sportlich", "gruppe": "energie", "verhalten": {"tempo": 1, "momente": -1}}, "schlaflos": {"name": "schlaflos", "gruppe": "energie", "ursachen": {"kraft": 1}, "blocker": ["wach", "snooze", "waelzen"], "probleme": {"erschoepfung": 1}}, # --- Selbstbild "selbstkritisch": {"name": "selbstkritisch", "gruppe": "selbst", "ursachen": {"grund": 1}, "probleme": {"selbstzweifel": 2}}, "selbstbewusst": {"name": "selbstbewusst", "gruppe": "selbst", "verhalten": {"einrichten": 1, "sichtbar": 1}}, "unsicher": {"name": "unsicher", "gruppe": "selbst", "blocker": ["recherche"], "probleme": {"selbstzweifel": 1, "angst": 1}, "verhalten": {"einrichten": -1}}, "bescheiden": {"name": "bescheiden", "gruppe": "selbst", "verhalten": {"sozial": 1}}, "eitel": {"name": "eitel", "gruppe": "selbst", "blocker": ["vergleichen"], "probleme": {"selbstzweifel": 1}}, "vergleichend": {"name": "vergleicht sich gern", "gruppe": "selbst", "ursachen": {"grund": 1}, "blocker": ["vergleichen"], "probleme": {"selbstzweifel": 1}}, "hadernd": {"name": "hadert mit sich", "gruppe": "selbst", "ursachen": {"grund": 2}, "blocker": ["waelzen"], "probleme": {"selbstzweifel": 1}}, } const MINDESTENS := 6 const URSACHEN_MAX := 3 const PROBLEME_MAX := 2 static func name_von(key: String) -> String: return str(LISTE[key]["name"]) if LISTE.has(key) else key static func ids() -> Array: return LISTE.keys() static func in_gruppe(gruppe: String) -> Array: var out: Array = [] for key in LISTE: if LISTE[key]["gruppe"] == gruppe: out.append(key) return out ## Aus den angekreuzten Wörtern das Bild: Ursachen, Blocker, Klemmen, Verhalten. static func profil(woerter: Array) -> Dictionary: var ursachen: Dictionary = {} var probleme: Dictionary = {} var blocker: Array = [] var verhalten: Dictionary = {} for v in VERHALTEN: verhalten[v] = 0 for w in woerter: if not LISTE.has(w): continue var e: Dictionary = LISTE[w] for u in e.get("ursachen", {}): ursachen[u] = int(ursachen.get(u, 0)) + int(e["ursachen"][u]) for p in e.get("probleme", {}): probleme[p] = int(probleme.get(p, 0)) + int(e["probleme"][p]) for b in e.get("blocker", []): if not blocker.has(b): blocker.append(b) for v in e.get("verhalten", {}): verhalten[v] = int(verhalten[v]) + int(e["verhalten"][v]) for v in VERHALTEN: verhalten[v] = clampi(int(verhalten[v]), -2, 2) var urs := _oben(ursachen, URSACHEN_MAX, 2, Ursachen.LISTE.keys()) var prob := _oben(probleme, PROBLEME_MAX, 1, Probleme.LISTE.keys()) # Blocker müssen zu einer der Ursachen gehören, sonst passt keine Technik var passend: Array = [] for b in blocker: if urs.has(Ursachen.ursache_von(b)): passend.append(b) return {"ursachen": urs, "probleme": prob, "blocker": passend, "verhalten": verhalten} ## Die stärksten Einträge, mindestens `min`, höchstens `max`. Fehlt Gewicht, ## füllt die Reihenfolge des Katalogs auf -- niemand ist ohne Grund. static func _oben(gewichte: Dictionary, max: int, min: int, katalog: Array) -> Array: var keys: Array = gewichte.keys() keys.sort_custom(func(a, b) -> bool: return int(gewichte[a]) > int(gewichte[b])) var out: Array = [] for k in keys: if int(gewichte[k]) <= 0 or out.size() >= max: break out.append(str(k)) for k in katalog: if out.size() >= min: break if not out.has(str(k)): out.append(str(k)) return out