Add puzzle room logic

This commit is contained in:
Tahar Lamred & Theresa Nerz 2026-07-01 16:53:54 +02:00
parent e5e62b5045
commit da065aa76f
2 changed files with 27 additions and 11 deletions

View file

@ -18,7 +18,7 @@ def start():
return '<h1>Verlies</h1><a href="/app/?room=1">Abenteuer starten</a>' return '<h1>Verlies</h1><a href="/app/?room=1">Abenteuer starten</a>'
db = get_db() db = get_db()
r = db.execute("SELECT name, beschreibung FROM raeume WHERE id = ?", (room_id,)).fetchone() r = db.execute("SELECT name, beschreibung, raetsel_frage, raetsel_antwort FROM raeume WHERE id = ?", (room_id,)).fetchone()
ausgaenge = db.execute( ausgaenge = db.execute(
"SELECT richtung, nach_raum FROM ausgaenge WHERE von_raum = ?", (room_id,) "SELECT richtung, nach_raum FROM ausgaenge WHERE von_raum = ?", (room_id,)
).fetchall() ).fetchall()
@ -27,6 +27,17 @@ def start():
if r is None: if r is None:
return '<h1>Raum nicht gefunden</h1>' return '<h1>Raum nicht gefunden</h1>'
if r["raetsel_frage"]:
if request.method == "POST":
if request.form.get("antwort", "").strip() == r["raetsel_antwort"]:
return "<h1>Befreit!</h1>"
return 'Leider falsch. <a href="/app/?room=' + str(room_id) + '">nochmal</a>'
html = "<h1>" + r["name"] + "</h1>"
html += "<p>" + r["beschreibung"] + "</p>"
html += '<form method="post">' + r["raetsel_frage"] + ' <input name="antwort"><button>OK</button></form>'
return html
html = "<h1>" + r["name"] + "</h1>" html = "<h1>" + r["name"] + "</h1>"
html += "<p>" + r["beschreibung"] + "</p>" html += "<p>" + r["beschreibung"] + "</p>"
for a in ausgaenge: for a in ausgaenge:

View file

@ -3,29 +3,34 @@ import sqlite3
db = sqlite3.connect("adventure.db") # Datei wird angelegt, falls nicht da db = sqlite3.connect("adventure.db") # Datei wird angelegt, falls nicht da
db.executescript(""" db.executescript("""
CREATE TABLE IF NOT EXISTS raeume ( DROP TABLE IF EXISTS raeume;
DROP TABLE IF EXISTS ausgaenge;
CREATE TABLE raeume (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
name TEXT, name TEXT,
beschreibung TEXT beschreibung TEXT,
raetsel_frage TEXT,
raetsel_antwort TEXT
); );
CREATE TABLE IF NOT EXISTS ausgaenge ( CREATE TABLE ausgaenge (
von_raum INTEGER, von_raum INTEGER,
richtung TEXT, richtung TEXT,
nach_raum INTEGER nach_raum INTEGER
); );
DELETE FROM raeume; INSERT INTO raeume (id, name, beschreibung, raetsel_frage, raetsel_antwort) VALUES
DELETE FROM ausgaenge; (1, 'Eingangshalle', 'Eine schwere Tür fällt hinter dir zu. Zwei Gänge führen ins Dunkel.', NULL, NULL),
(2, 'Krypta', 'Kaltes Kerzenlicht flackert an den Wänden.', NULL, NULL),
INSERT INTO raeume (id, name, beschreibung) VALUES (3, 'Bibliothek', 'Staubige Bücher stapeln sich bis zur Decke.', NULL, NULL),
(1, 'Eingangshalle', 'Eine schwere Tür fällt hinter dir zu. Zwei Gänge führen ins Dunkel.'), (4, 'Schatzkammer', 'Eine verschlossene Truhe glänzt im Halbdunkel.', 'Wie viele Beine hat eine Spinne?', '8');
(2, 'Krypta', 'Kaltes Kerzenlicht flackert an den Wänden.'),
(3, 'Bibliothek', 'Staubige Bücher stapeln sich bis zur Decke.');
INSERT INTO ausgaenge (von_raum, richtung, nach_raum) VALUES INSERT INTO ausgaenge (von_raum, richtung, nach_raum) VALUES
(1, 'links', 2), (1, 'links', 2),
(1, 'rechts', 3), (1, 'rechts', 3),
(2, 'zurück', 1), (2, 'zurück', 1),
(2, 'vor', 4),
(2, 'hoch', 3),
(3, 'zurück', 1); (3, 'zurück', 1);
""") """)