""" U18 – Klick-Adventure "Einbruch im Octan-Tower" (The-Lego-Movie-Style) ===================================================================== Legt die SQLite-Datenbank `adventure.db` an und befüllt sie mit: - raeume : die Etagen des Octan-Towers - ausgaenge : welcher Ausgang führt in welche Etage - fragen : Trivia-Fragen pro Etage (Multiple-Choice) 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, ist_ziel INTEGER DEFAULT 0 ); CREATE TABLE ausgaenge ( von_raum INTEGER, richtung TEXT, nach_raum INTEGER ); CREATE TABLE fragen ( id INTEGER PRIMARY KEY, raum_id INTEGER, frage TEXT, antwort TEXT, optionen TEXT -- Antwortmöglichkeiten, per | getrennt ); """) # ─── Räume: der Aufstieg durch den Octan-Tower ─────────────────────────────── raeume = [ (1, "Lobby des Octan-Towers", "Die Türen fallen hinter dir zu. Präsident Business' Wolkenkratzer ragt " "über dir auf. Ein gläserner Aufzug führt nach oben – ganz oben wartet das " "Kragle. Everything is ... noch nicht awesome.", 0), (2, "1. Etage – Die Hai-Etage 🦈", "Ein tiefer Wassergraben voller hungriger Haie trennt dich vom nächsten " "Aufzug. Der Sicherheits-Wächter lässt dich nur weiter, wenn du seine " "Fragen richtig beantwortest.", 0), (3, "2. Etage – Die Laser-Etage 🔴", "Rote Laserstrahlen zerschneiden den Raum zu einem glühenden Gitter. Ein " "Terminal blinkt: Beantworte die Fragen korrekt, sonst bleibt das " "Laser-Gitter für immer aktiv.", 0), (4, "3. Etage – Die Laserhai-Etage 🦈⚡", "Und dann ... Haie. Mit Laserstrahlen. Auf dem Kopf. Präsident Business " "meint es wirklich ernst. Nur wer clever genug ist, kommt am " "Laserhai-Becken vorbei.", 0), (5, "Das Dach – Der Kragle-Tresor 🏆", "Du stehst vor dem Kragle – ein einziger Klecks Kleber, der die ganze " "Welt für immer einfrieren könnte. Doch du hast es rechtzeitig geschafft " "und Präsident Business gestoppt!", 1), ] db.executemany( "INSERT INTO raeume (id, name, beschreibung, ist_ziel) VALUES (?,?,?,?)", raeume, ) # ─── Ausgänge: linearer Aufstieg (jede Etage → nächste Etage) ──────────────── ausgaenge = [ (1, "Aufzug nach oben 🛗", 2), (2, "Treppe hoch 🪜", 3), (3, "Treppe hoch 🪜", 4), (4, "Aufs Dach 🏢", 5), ] db.executemany( "INSERT INTO ausgaenge (von_raum, richtung, nach_raum) VALUES (?,?,?)", ausgaenge, ) # ─── Trivia-Fragen pro Etage ───────────────────────────────────────────────── # Pro Etage 4 Fragen: 1–2 thematisch passend, danach Popkultur. # "antwort" ist die korrekte Option, "optionen" alle Auswahlmöglichkeiten (|-getrennt). fragen = [ # ── Etage 1: Haie ───────────────────────────────────────────── (2, "🦈 Welcher Hai ist der größte Fisch der Welt?", "Walhai", "Weißer Hai|Walhai|Hammerhai"), (2, "🦈 Wie heißt Steven Spielbergs berühmter Hai-Film von 1975?", "Der weiße Hai", "Der weiße Hai|Free Willy|Findet Nemo"), (2, "🎮 Wie heißt Marios grün gekleideter Bruder?", "Luigi", "Luigi|Wario|Yoshi"), (2, "🎬 In welcher Weltraum-Saga kämpfen Jedi gegen Sith?", "Star Wars", "Star Trek|Star Wars|Herr der Ringe"), # ── Etage 2: Laser ──────────────────────────────────────────── (3, "🔴 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"), (3, "⚔️ Welche leuchtende Laser-Waffe führt ein Jedi in Star Wars?", "Lichtschwert", "Lichtschwert|Laserpistole|Zauberstab"), (3, "🦸 Welcher Superheld trägt ein blaues Kostüm mit rotem Umhang und einem 'S'?", "Superman", "Batman|Superman|Spider-Man"), (3, "🎮 In welchem Spiel fängt man Kreaturen in kleinen Bällen?", "Pokémon", "Minecraft|Tetris|Pokémon"), # ── Etage 3: Laserhaie ──────────────────────────────────────── (4, "🦈⚡ In welchem Film wünscht sich Dr. Evil „Haie mit Laserstrahlen auf dem Kopf“?", "Austin Powers", "James Bond|Austin Powers|Men in Black"), (4, "🧱 Wie heißt der Bösewicht, in dessen Turm du gerade einbrichst?", "Lord Business", "Lord Business|Lord Vader|Lord Farquaad"), (4, "🎵 Wie lautet der Ohrwurm-Titelsong aus „The Lego Movie“?", "Everything Is Awesome", "Everything Is Awesome|Let It Go|Happy"), (4, "🧙 Welches Zauberer-Internat besucht Harry Potter?", "Hogwarts", "Narnia|Hogwarts|Mordor"), ] 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))