"""
U18 – Klick-Adventure "Einbruch im Octan-Tower" (The-Lego-Movie-Style)
=====================================================================
Legt die SQLite-Datenbank `adventure.db` an und befüllt sie mit einem
verzweigten Verlies:

  - raeume    : Räume/Gänge des Octan-Towers (mit Typ: start/gang/thema/
                sackgasse/ziel)
  - ausgaenge : welcher Weg (links/rechts/…) führt in welchen Raum – inkl.
                Story-Hinweis für die Entscheidung
  - fragen    : Fragen pro Raum
                • Themen-Räume  → thematische Fragen  (der RICHTIGE Weg)
                • Sackgassen    → themenfremde Trivia  (der FALSCHE Weg)
                • Ziel-Raum     → die finale Lord-Business-Frage

Spielprinzip
------------
Jede Etage ist ein Gang, der sich gabelt. Nach den Text-Hinweisen entscheidet
man sich für links oder rechts:
  • RICHTIGER Weg  → wenige thematische Fragen → direkt eine Etage höher.
  • FALSCHER Weg   → viele themenfremde Trivia → "Haha, Sackgasse!" → zurück
                     zum Gang, dann den richtigen Weg nehmen.
Ganz oben wartet der Kragle-Tresor mit der finalen Lord-Business-Frage.

Leitprinzip (wie in U17):
  LOKAL schreiben & pushen  –  auf dem SERVER einmalig ausführen:
      python3 init_db.py
Danach entsteht adventure.db direkt neben diesem Skript.
"""
import os
import sqlite3

# adventure.db immer neben dieser Datei ablegen (unabhängig vom Arbeitsverzeichnis)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DB_PATH = os.path.join(BASE_DIR, "adventure.db")

db = sqlite3.connect(DB_PATH)

# Tabellen bei jedem Lauf sauber neu aufbauen (DROP statt DELETE, damit auch
# geänderte Spalten greifen).
db.executescript("""
DROP TABLE IF EXISTS raeume;
DROP TABLE IF EXISTS ausgaenge;
DROP TABLE IF EXISTS fragen;

CREATE TABLE raeume (
    id           INTEGER PRIMARY KEY,
    name         TEXT,
    beschreibung TEXT,
    typ          TEXT,       -- 'start' | 'gang' | 'thema' | 'challenge' | 'ziel'
    etage        INTEGER,    -- 0 = Lobby, 1..3 = Etagen, 4 = Dach
    zeit_limit   INTEGER,    -- Challenge: Sekunden Zeitlimit (sonst NULL)
    ziel_anzahl  INTEGER,    -- Challenge: so viele Fragen richtig nötig (sonst NULL)
    erfolg_raum  INTEGER,    -- Challenge: Raum bei Erfolg (0/NULL = sofort gewonnen)
    erfolg_text  TEXT        -- Challenge: Story-Text bei Erfolg
);

CREATE TABLE ausgaenge (
    von_raum  INTEGER,
    richtung  TEXT,         -- kurzer Button-Text, z. B. "⬅️ Nach links"
    nach_raum INTEGER,
    hinweis   TEXT          -- Story-Hinweis unter dem Button
);

CREATE TABLE fragen (
    id       INTEGER PRIMARY KEY,
    raum_id  INTEGER,
    frage    TEXT,
    antwort  TEXT,
    optionen TEXT          -- Antwortmöglichkeiten, per | getrennt
);
""")

# ─── Räume ───────────────────────────────────────────────────────────────────
# IDs bewusst gruppiert: 1 = Lobby, 10er = Etage 1, 20er = Etage 2, 30er = Etage 3.
raeume = [
    # ---- Start ----
    (1, "Lobby des Octan-Towers",
     "Die gläsernen Türen fallen hinter dir zu – kein Zurück. Über dir ragt der "
     "Wolkenkratzer von Präsident Business auf. Ganz oben, im Kragle-Tresor, "
     "wartet der gefährlichste Kleber der Welt. Ein einzelner Aufzug führt nach "
     "oben. Zeit, ihn zu stoppen.",
     "start", 0, None, None, None, None),

    # ---- Etage 1: Haie (Prüf-Weg = LINKS → 11, Abkürzung = RECHTS → 12) ----
    (10, "1. Etage – Der Hai-Gang 🦈",
     "Der Aufzug öffnet sich in einen Gang mit zwei Wegen. Nach LINKS weht "
     "salzige Luft vom Haibecken herüber – der offizielle Prüf-Weg über den "
     "Steg. Nach RECHTS steht eine Tür einen Spalt offen; drinnen rumort "
     "jemand. Vielleicht eine schnelle Abkürzung – aber riskant?",
     "gang", 1, None, None, None, None),
    (11, "Steg über dem Haibecken 🦈",
     "Du folgst der salzigen Luft. Unter dem schmalen Steg schnappen hungrige "
     "Haie. Das Sicherheitssystem summt: Beweise dein Hai-Wissen, sonst fährt "
     "der Steg ein!",
     "thema", 1, None, None, None, None),
    (12, "Nebenraum – Der Biologe 🔬",
     "Statt zum Haibecken schlüpfst du durch die Tür – und stehst vor einem "
     "nervösen Meeresbiologen mit dickem Wälzer unterm Arm. „Du willst hoch zum "
     "Kragle? Beweis mir, dass du Ahnung hast: 10 Biologie-Fragen, 40 Sekunden, "
     "kein einziger Fehler. Schaffst du's, schmuggle ich dich im Proben-Container "
     "ganz nach oben. Verhaust du dich, ruf ich die Wachen!“",
     "challenge", 1, 40, 10, 40,
     "Der Biologe grinst: „Nicht schlecht für einen Einbrecher!“ Er versteckt "
     "dich im Proben-Container und der Lastenaufzug schießt ganz nach oben – "
     "direkt vor den Kragle-Tresor!"),

    # ---- Etage 2: Laser (Prüf-Weg = RECHTS → 21, Abkürzung = LINKS → 22) ----
    (20, "2. Etage – Der Laser-Gang 🔴",
     "Rote Strahlen zerschneiden die Luft zu einem glühenden Gitter. Nach "
     "RECHTS liegt der „Laser-Kontrollraum“ – der offizielle Prüf-Weg. Nach "
     "LINKS, in einem engen Wartungsgang, kauert ein Elektriker zwischen "
     "Kabeln und winkt dich heran. Eine Abkürzung mit Risiko?",
     "gang", 2, None, None, None, None),
    (21, "Der Laser-Kontrollraum 🔴",
     "Im Kontrollraum flimmern hundert Regler. Wer die Laser abschalten will, "
     "muss beweisen, dass er versteht, wie sie funktionieren.",
     "thema", 2, None, None, None, None),
    (22, "Wartungsgang – Der Elektriker ⚡",
     "Im engen Wartungsgang hockt ein Elektriker in einem Nest aus Kabeln. „Die "
     "Laser willst du los? Zeig mir, dass du was von Strom verstehst: 10 Fragen, "
     "40 Sekunden, fehlerfrei. Dann leg ich die ganze Etage lahm und der Express "
     "bringt dich zur letzten Tür. Patzt du, jagt dich der Alarm hoch!“",
     "challenge", 2, 40, 10, 40,
     "Der Elektriker legt einen Hebel um – mit einem Zischen erlöschen alle "
     "Laser. „Express für den Profi!“ Der Aufzug rast nach oben, direkt vor die "
     "letzte Tür."),

    # ---- Etage 3: Laserhaie (Prüf-Weg = LINKS → 31, Abkürzung = RECHTS → 32) ----
    (30, "3. Etage – Der Laserhai-Gang 🦈⚡",
     "Absurd, aber real: Haie. Mit Lasern. Auf dem Kopf. Nach LINKS führt ein "
     "schmaler Steg über das Laserhai-Becken – der offizielle Prüf-Weg. Nach "
     "RECHTS versperren die Cyborg-Wächter von Präsident Business den Gang und "
     "fordern dich heraus: Wer sie schlägt, gewinnt sofort – wer patzt, ist raus.",
     "gang", 3, None, None, None, None),
    (31, "Steg über dem Laserhai-Becken 🦈⚡",
     "Unter dir kreisen die Laserhaie und zwinkern gefährlich. Das letzte "
     "Sicherheitssystem vor dem Dach will dich prüfen – bleib cool!",
     "thema", 3, None, None, None, None),
    (32, "Sperrzone – Die Cyborgs 🤖",
     "Drei Cyborg-Wächter riegeln den Weg ab. „DENKE. WIE. EINE. MASCHINE“, "
     "rattern sie im Chor. „Fünf Fragen. Zwanzig Sekunden. Antworte nicht wie "
     "ein weicher Mensch, sondern wie ein Computer. Bestehst du, erkennen wir "
     "dich als eine der Unseren – und du hast gewonnen. Sonst: Löschung.“",
     "challenge", 3, 20, 5, 0,
     "Die Cyborgs synchronisieren kurz – dann nicken sie im Takt: „EINE VON "
     "UNS.“ Sie treten beiseite, der Weg zum Kragle ist frei. Du hast Präsident "
     "Business gestoppt!"),

    # ---- Dach: Ziel ----
    (40, "Das Dach – Der Kragle-Tresor 🏆",
     "Ganz oben. Vor dir schwebt das Kragle im offenen Tresor. Nur noch eine "
     "letzte Sicherung von Präsident Business steht zwischen dir und der Rettung "
     "der Welt.",
     "ziel", 4, None, None, None, None),
]
db.executemany(
    "INSERT INTO raeume "
    "(id, name, beschreibung, typ, etage, zeit_limit, ziel_anzahl, erfolg_raum, erfolg_text) "
    "VALUES (?,?,?,?,?,?,?,?,?)",
    raeume,
)

# ─── Ausgänge (mit Story-Hinweis) ────────────────────────────────────────────
# Gänge haben ZWEI Wege: den sicheren Prüf-Weg (Themen-Raum, eine Etage höher)
# und die riskante Abkürzung (Challenge-Raum). Challenge-Räume führen per
# "Zurück" wieder in den Gang, falls man sich doch nicht traut.
ausgaenge = [
    # Lobby → Etage 1
    (1,  "🛗 Aufzug nach oben", 10, "Der einzige Weg führt nach oben."),

    # Etage 1 (Prüf-Weg = LINKS → 11, Abkürzung = RECHTS → 12)
    (10, "⬅️ Nach links: Steg zum Haibecken", 11,
     "🦈 Der sichere Prüf-Weg: ein paar Hai-Fragen, dann weiter."),
    (10, "➡️ Nach rechts: die offene Tür", 12,
     "🔬 Ein Nebenraum – riskante Abkürzung mit einem Biologen."),
    (11, "🪜 Treppe zur 2. Etage", 20, "Der Steg hält – schnell weiter nach oben!"),
    (12, "↩️ Zurück in den Hai-Gang", 10, "Doch lieber den sicheren Prüf-Weg nehmen."),

    # Etage 2 (Prüf-Weg = RECHTS → 21, Abkürzung = LINKS → 22)
    (20, "⬅️ Nach links: der Wartungsgang", 22,
     "⚡ Ein Elektriker bietet dir eine riskante Abkürzung an."),
    (20, "➡️ Nach rechts: Laser-Kontrollraum", 21,
     "🔴 Der sichere Prüf-Weg: ein paar Laser-Fragen, dann weiter."),
    (21, "🪜 Treppe zur 3. Etage", 30, "Die Laser erlöschen – der Weg ist frei!"),
    (22, "↩️ Zurück in den Laser-Gang", 20, "Doch lieber den sicheren Prüf-Weg nehmen."),

    # Etage 3 (Prüf-Weg = LINKS → 31, Abkürzung = RECHTS → 32)
    (30, "⬅️ Nach links: Steg zum Laserhai-Becken", 31,
     "🦈⚡ Der sichere Prüf-Weg: ein paar Laserhai-Fragen, dann aufs Dach."),
    (30, "➡️ Nach rechts: die Sperrzone", 32,
     "🤖 Die Cyborgs fordern dich – gewinnst du, ist sofort Schluss (im Guten)."),
    (31, "🏢 Aufs Dach zum Kragle-Tresor", 40, "Die Laserhaie tauchen ab – nach oben!"),
    (32, "↩️ Zurück in den Laserhai-Gang", 30, "Doch lieber den sicheren Prüf-Weg nehmen."),
]
db.executemany(
    "INSERT INTO ausgaenge (von_raum, richtung, nach_raum, hinweis) VALUES (?,?,?,?)",
    ausgaenge,
)

# ─── Fragen ──────────────────────────────────────────────────────────────────
# Themen-Räume (11/21/31): wenige PASSENDE Fragen – der sichere Prüf-Weg.
# Challenge-Räume (12/22/32): eigene Fragenbank für die Risk/Reward-Abkürzung
#   – Biologe (10), Elektriker (10), Cyborgs (5, „denk wie eine Maschine“).
# Ziel-Raum (40): die finale Lord-Business-Frage.
fragen = [
    # ── Etage 1 · Prüf-Weg: Hai-Fragen (Raum 11) ─────────────────
    (11, "🦈 Welcher Hai ist der größte Fisch der Welt?",
     "Walhai", "Weißer Hai|Walhai|Hammerhai"),
    (11, "🦈 Wie heißt Steven Spielbergs berühmter Hai-Film von 1975?",
     "Der weiße Hai", "Der weiße Hai|Free Willy|Findet Nemo"),
    (11, "🦈 Womit atmen Haie unter Wasser?",
     "Kiemen", "Lungen|Kiemen|Schwimmflossen"),

    # ── Etage 1 · Abkürzung: BIOLOGE – 10 Biologie-Fragen (Raum 12) ──
    (12, "🫀 Welches Organ pumpt das Blut durch den Körper?",
     "Herz", "Herz|Leber|Lunge"),
    (12, "🌿 Welcher Farbstoff macht Pflanzen grün?",
     "Chlorophyll", "Chlorophyll|Hämoglobin|Melanin"),
    (12, "🐝 Wie viele Beine hat ein Insekt?",
     "6", "4|6|8"),
    (12, "🫁 Welches Gas atmen Menschen zum Leben ein?",
     "Sauerstoff", "Sauerstoff|Kohlendioxid|Helium"),
    (12, "🔬 Wie heißt die kleinste lebende Einheit?",
     "Zelle", "Zelle|Atom|Molekül"),
    (12, "🐬 Welches dieser Tiere ist ein Säugetier?",
     "Delfin", "Delfin|Hai|Krokodil"),
    (12, "🍃 Wo findet die Fotosynthese hauptsächlich statt?",
     "Blatt", "Blatt|Wurzel|Blüte"),
    (12, "❤️ Wie viele Kammern hat das menschliche Herz?",
     "4", "2|3|4"),
    (12, "☀️ Welches Vitamin bildet der Körper mithilfe von Sonnenlicht?",
     "Vitamin D", "Vitamin C|Vitamin D|Vitamin B12"),
    (12, "🩸 Wie heißt der rote Blutfarbstoff?",
     "Hämoglobin", "Hämoglobin|Chlorophyll|Keratin"),

    # ── Etage 2 · Prüf-Weg: Laser-Fragen (Raum 21) ───────────────
    (21, "🔴 Wofür steht das Akronym LASER?",
     "Light Amplification by Stimulated Emission of Radiation",
     "Light Amplification by Stimulated Emission of Radiation|"
     "Large Automatic System for Energy Reflection|"
     "Leuchtende Aktive Strahlen-Emissions-Röhre"),
    (21, "⚔️ Welche leuchtende Laser-Waffe führt ein Jedi in Star Wars?",
     "Lichtschwert", "Lichtschwert|Laserpistole|Zauberstab"),
    (21, "🌈 Welche Farbe hat ein klassischer Laserpointer meistens?",
     "Rot", "Rot|Lila|Schwarz"),

    # ── Etage 2 · Abkürzung: ELEKTRIKER – 10 Elektrik-Fragen (Raum 22) ──
    (22, "⚡ In welcher Einheit misst man die elektrische Spannung?",
     "Volt", "Volt|Watt|Ampere"),
    (22, "🔌 In welcher Einheit misst man die Stromstärke?",
     "Ampere", "Ampere|Ohm|Volt"),
    (22, "🧲 Was misst man in der Einheit Ohm?",
     "Widerstand", "Leistung|Widerstand|Spannung"),
    (22, "🪙 Welches Material leitet Strom besonders gut?",
     "Kupfer", "Kupfer|Gummi|Holz"),
    (22, "🔁 Ein Stromkreis, durch den Strom fließt, ist …?",
     "geschlossen", "geschlossen|offen|leer"),
    (22, "📐 Wie lautet das Ohmsche Gesetz?",
     "U = R · I", "U = R · I|U = R + I|U = R − I"),
    (22, "🟢 Welche Farbe hat der Schutzleiter (Erde) meist?",
     "Grün-Gelb", "Grün-Gelb|Blau|Braun"),
    (22, "🚿 Womit sollte man NIEMALS an eine Steckdose fassen?",
     "Mit nassen Händen", "Mit nassen Händen|Mit Gummihandschuhen|Mit einem isolierten Schraubendreher"),
    (22, "🏭 Was erzeugt ein Kraftwerk vor allem?",
     "Elektrische Energie", "Elektrische Energie|Trinkwasser|Benzin"),
    (22, "🔋 Welches Bauteil speichert elektrische Ladung?",
     "Kondensator", "Kondensator|Widerstand|Transistor"),

    # ── Etage 3 · Prüf-Weg: Laserhai-Fragen (Raum 31) ────────────
    (31, "🦈⚡ In welchem Film wünscht sich Dr. Evil „Haie mit Laserstrahlen auf dem Kopf“?",
     "Austin Powers", "James Bond|Austin Powers|Men in Black"),
    (31, "🧬 Woraus setzt sich ein „Laserhai“ zusammen?",
     "Hai und Laser", "Hai und Laser|Katze und Hund|Auto und Boot"),
    (31, "😉 Wenn ein Laserhai gefährlich zwinkert – was schießt aus seinen Augen?",
     "Laserstrahlen", "Wasser|Laserstrahlen|Konfetti"),

    # ── Etage 3 · Abkürzung: CYBORGS – 5 Maschinen-Logik-Fragen (Raum 32) ──
    #   „Antworte wie eine Maschine – nicht unbedingt logisch für Menschen.“
    (32, "🤖 1 + 1 = ?  (denke binär, wie ein Computer)",
     "10", "2|10|11"),
    (32, "🤖 WAHR UND FALSCH ergibt … (Boolesche Logik)?",
     "Falsch", "Wahr|Falsch|Vielleicht"),
    (32, "🤖 Bei welcher Zahl beginnt ein Computer zu zählen?",
     "0", "0|1|-1"),
    (32, "🤖 Wie viele Bits hat ein Byte?",
     "8", "4|8|16"),
    (32, "🤖 0,1 + 0,2 ergibt für einen Computer ungefähr …?",
     "0,30000000000000004", "0,3|0,30000000000000004|0,03"),

    # ── Dach · ZIEL: finale Lord-Business-Frage (Raum 40) ────────
    (40, "🧱 FINALE: Wie heißt der Bösewicht, in dessen Turm du gerade eingebrochen bist?",
     "Lord Business", "Lord Business|Lord Vader|Lord Farquaad"),
]
db.executemany(
    "INSERT INTO fragen (raum_id, frage, antwort, optionen) VALUES (?,?,?,?)",
    fragen,
)

db.commit()
db.close()

print("Datenbank adventure.db angelegt:", DB_PATH)
print("  Räume:", len(raeume),
      "| Ausgänge:", len(ausgaenge),
      "| Fragen:", len(fragen))
