From 0f6bd13e574bf99f60c624c3757d78f23c73163d Mon Sep 17 00:00:00 2001 From: ElenaRJ Date: Wed, 15 Jul 2026 17:15:04 +0200 Subject: [PATCH] fehler behoben --- app/app.py | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 162 insertions(+), 1 deletion(-) diff --git a/app/app.py b/app/app.py index 1583520..4ca5c43 100644 --- a/app/app.py +++ b/app/app.py @@ -184,4 +184,165 @@ def start(): if row: db.execute( - "UPDATE \ No newline at end of file + "UPDATE spielstand SET raum_id=1, startzeit=?, fertig=0 WHERE spieler=?", + (session["startzeit"], name) + ) + else: + db.execute( + "INSERT INTO spielstand (spieler, raum_id, startzeit, fertig) VALUES (?, 1, ?, 0)", + (name, session["startzeit"]) + ) + + db.commit() + db.close() + return redirect("/app/raum/1") + + db = get_db() + anzahl = db.execute("SELECT COUNT(*) AS n FROM spielstand").fetchone()["n"] + highscores = db.execute( + "SELECT spieler, sekunden, gewonnen_am FROM highscore ORDER BY sekunden ASC, gewonnen_am ASC LIMIT 10" + ).fetchall() + db.close() + + html = "

Verlies

" + html += f"

{anzahl} Abenteurer waren schon hier.

" + + if "spieler" in session: + db = get_db() + s = db.execute( + "SELECT raum_id FROM spielstand WHERE spieler=?", + (session["spieler"],) + ).fetchone() + db.close() + if s: + html += f"

Willkommen zurück, {session['spieler']}!

" + html += f'Weiterspielen' + html += 'Neues Abenteuer' + + html += """ +
+
+ +
+ +
+ """ + + html += "

Highscore

" + if highscores: + html += "
    " + for hs in highscores: + minuten = int(hs["sekunden"] // 60) + sekunden = int(hs["sekunden"] % 60) + zeit = f"{minuten}m {sekunden}s" if minuten else f"{sekunden}s" + html += f"
  1. {hs['spieler']} — {zeit}
  2. " + html += "
" + else: + html += "

Noch kein Schatz gefunden.

" + html += "
" + + return layout(html) + + +@app.route("/raum/", methods=["GET", "POST"]) +def raum(id): + db = get_db() + + if "spieler" in session: + db.execute( + "UPDATE spielstand SET raum_id=? WHERE spieler=?", + (id, session["spieler"]) + ) + db.commit() + + r = db.execute("SELECT * FROM raeume WHERE id=?", (id,)).fetchone() + + if r["raetsel_frage"]: + if request.method == "POST": + if request.form["antwort"].strip() == r["raetsel_antwort"]: + now = datetime.utcnow() + startzeit_str = session.get("startzeit") + if not startzeit_str: + row = db.execute( + "SELECT startzeit FROM spielstand WHERE spieler=?", + (session["spieler"],) + ).fetchone() + startzeit_str = row["startzeit"] if row else None + + if startzeit_str and "spieler" in session: + startzeit = datetime.fromisoformat(startzeit_str) + sekunden = (now - startzeit).total_seconds() + + bereits = db.execute( + "SELECT 1 FROM highscore WHERE spieler=? AND gewonnen_am=?", + (session["spieler"], now.date().isoformat()) + ).fetchone() + + db.execute( + "INSERT INTO highscore (spieler, sekunden, gewonnen_am) VALUES (?, ?, ?)", + (session["spieler"], sekunden, now.date().isoformat()) + ) + db.execute( + "UPDATE spielstand SET fertig=1 WHERE spieler=?", + (session["spieler"],) + ) + db.commit() + + db.close() + return layout(""" +

Du findest einen Schatz

+

Herzlichen Glückwunsch. Du hast das Verlies überlebt.

+ Zurück zum Anfang + """) + + db.close() + return layout(f""" +

Leider falsch

+

Die Antwort war nicht richtig.

+ Nochmal + """) + + db.close() + return layout(f""" +

{r["name"]}

+

{r["beschreibung"]}

+
+
+ +
+ +
+ """) + + ausgaenge = db.execute( + "SELECT richtung, nach_raum FROM ausgaenge WHERE von_raum=?", + (id,) + ).fetchall() + db.close() + + exits_html = "" + for a in ausgaenge: + exits_html += f'{a["richtung"]}' + + spieler_html = "" + if "spieler" in session: + spieler_html = f'

Unterwegs als: {session["spieler"]}

' + + html = f""" +

{r["name"]}

+

{r["beschreibung"]}

+ {spieler_html} +
{exits_html}
+ """ + return layout(html) + + +@app.route("/reset") +def reset(): + session.pop("spieler", None) + session.pop("startzeit", None) + return redirect("/app/") + + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=9008) \ No newline at end of file