Compare commits

...

2 commits

Author SHA1 Message Date
Tahar Lamred & Theresa Nerz
23d3318be1 Finalize adventure puzzle room 2026-07-01 16:57:34 +02:00
Tahar Lamred & Theresa Nerz
da065aa76f Add puzzle room logic 2026-07-01 16:53:54 +02:00
2 changed files with 30 additions and 14 deletions

View file

@ -9,16 +9,16 @@ def get_db():
db.row_factory = sqlite3.Row db.row_factory = sqlite3.Row
return db return db
@app.route("/") @app.route("/", methods=["GET", "POST"])
@app.route("/app") @app.route("/app", methods=["GET", "POST"])
@app.route("/app/") @app.route("/app/", methods=["GET", "POST"])
def start(): def start():
room_id = request.args.get("room", type=int) room_id = request.args.get("room", type=int)
if room_id is None: if room_id is None:
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);
""") """)