From 88cd686a495b80e7ad28e416b679b1a762273b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mara=20Z=C3=B6llner?= Date: Wed, 1 Jul 2026 16:39:17 +0200 Subject: [PATCH] einbau highscore --- flask_app/app.py | 82 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/flask_app/app.py b/flask_app/app.py index 4975f1c..87fed25 100644 --- a/flask_app/app.py +++ b/flask_app/app.py @@ -1,8 +1,11 @@ -from flask import Flask, request +from flask import Flask, request, session +from html import escape import sqlite3 +import time app = Flask(__name__) +app.secret_key = "stadion-escape-secret" STYLE = """ @@ -35,6 +38,9 @@ STYLE = """ background: #020617; color: #e5e7eb; } + ol { + padding-left: 1.4rem; + } """ @@ -45,9 +51,61 @@ def get_db(): return db -@app.route("/") +def highscore_html(db): + eintraege = db.execute( + """ + SELECT name, fertig_zeit - start_zeit AS dauer + FROM spieler + WHERE fertig_zeit IS NOT NULL + ORDER BY dauer + LIMIT 10 + """ + ).fetchall() + + if not eintraege: + return "" + + html = "

Highscore

    " + for eintrag in eintraege: + html += "
  1. " + escape(eintrag["name"]) + " - " + str(round(eintrag["dauer"], 1)) + " Sekunden
  2. " + html += "
" + return html + + +@app.route("/", methods=["GET", "POST"]) +@app.route("/app/", methods=["GET", "POST"]) def start(): - return STYLE + '

Stadion Escape

Abenteuer starten' + if request.method == "POST": + name = request.form["name"].strip() + if not name: + name = "Unbekannter Fan" + + db = get_db() + cursor = db.execute( + "INSERT INTO spieler (name, start_zeit, fertig_zeit) VALUES (?, ?, NULL)", + (name, time.time()), + ) + spieler_id = cursor.lastrowid + db.commit() + db.close() + + session["spieler_id"] = spieler_id + session["spieler_name"] = name + + return STYLE + ( + "

Eintrittskarte gelöst

" + "

Willkommen, " + escape(name) + ". Dein Weg durchs Stadion beginnt.

" + 'Zum Stadiontor' + ) + + return STYLE + ( + "

Stadion Escape

" + "

Trage deinen Namen auf der Eintrittskarte ein. Ab dann läuft deine Zeit.

" + '
' + '' + "" + "
" + ) @app.route("/raum/", methods=["GET", "POST"]) @@ -67,7 +125,23 @@ def raum(raum_id): db.close() if antwort == richtige_antwort: - return STYLE + "

Geschafft!

Die Nordkurve feiert mit dir.

" + db = get_db() + spieler_id = session.get("spieler_id") + if spieler_id: + db.execute( + "UPDATE spieler SET fertig_zeit=? WHERE id=? AND fertig_zeit IS NULL", + (time.time(), spieler_id), + ) + db.commit() + html = ( + "

Geschafft!

" + "

Die Nordkurve feiert mit dir, " + + escape(session.get("spieler_name", "Fan")) + + ".

" + ) + html += highscore_html(db) + db.close() + return STYLE + html return STYLE + ( '

Leider falsch

' '

Erwin schüttelt den Kopf. Die Botschaft stimmt noch nicht.

'