Highscore Anpassung

This commit is contained in:
Mara Zöllner 2026-07-15 15:44:05 +02:00
parent 3fb01608d7
commit bb929fa102
2 changed files with 29 additions and 7 deletions

View file

@ -289,10 +289,19 @@ def get_db():
""" """
CREATE TABLE IF NOT EXISTS spielstand ( CREATE TABLE IF NOT EXISTS spielstand (
spieler TEXT PRIMARY KEY, spieler TEXT PRIMARY KEY,
raum_id TEXT raum_id TEXT,
start_zeit REAL,
fertig_zeit REAL
) )
""" """
) )
spalten = {row[1] for row in db.execute("PRAGMA table_info(spielstand)")}
if "start_zeit" not in spalten:
db.execute("ALTER TABLE spielstand ADD COLUMN start_zeit REAL")
if "fertig_zeit" not in spalten:
db.execute("ALTER TABLE spielstand ADD COLUMN fertig_zeit REAL")
db.commit() db.commit()
return db return db
@ -310,9 +319,10 @@ def seite_html(inhalt, klasse="puzzle"):
def highscore_html(db): def highscore_html(db):
eintraege = db.execute( eintraege = db.execute(
""" """
SELECT name, fertig_zeit - start_zeit AS dauer SELECT spieler, fertig_zeit - start_zeit AS dauer
FROM spieler FROM spielstand
WHERE fertig_zeit IS NOT NULL WHERE fertig_zeit IS NOT NULL
AND start_zeit IS NOT NULL
ORDER BY dauer ORDER BY dauer
LIMIT 10 LIMIT 10
""" """
@ -369,8 +379,12 @@ def start():
) )
spieler_id = cursor.lastrowid spieler_id = cursor.lastrowid
db.execute( db.execute(
"INSERT OR IGNORE INTO spielstand (spieler, raum_id) VALUES (?, ?)", "INSERT OR IGNORE INTO spielstand (spieler, raum_id, start_zeit, fertig_zeit) VALUES (?, ?, ?, NULL)",
(name, "stadiontor"), (name, "stadiontor", time.time()),
)
db.execute(
"UPDATE spielstand SET raum_id=?, start_zeit=? WHERE spieler=?",
("stadiontor", time.time(), name),
) )
db.commit() db.commit()
db.close() db.close()
@ -451,12 +465,18 @@ def raum(raum_id):
if antwort == richtige_antwort: if antwort == richtige_antwort:
db = get_db() db = get_db()
spieler_id = session.get("spieler_id") spieler_id = session.get("spieler_id")
spieler_name = session.get("spieler") or session.get("spieler_name")
if spieler_id: if spieler_id:
db.execute( db.execute(
"UPDATE spieler SET fertig_zeit=? WHERE id=? AND fertig_zeit IS NULL", "UPDATE spieler SET fertig_zeit=? WHERE id=? AND fertig_zeit IS NULL",
(time.time(), spieler_id), (time.time(), spieler_id),
) )
db.commit() if spieler_name:
db.execute(
"UPDATE spielstand SET fertig_zeit=? WHERE spieler=? AND (fertig_zeit IS NULL OR fertig_zeit = 0)",
(time.time(), spieler_name),
)
db.commit()
html = ( html = (
"<h1>Geschafft!</h1>" "<h1>Geschafft!</h1>"
"<p>Die Nordkurve feiert mit dir, " "<p>Die Nordkurve feiert mit dir, "

View file

@ -36,7 +36,9 @@ db.executescript(
CREATE TABLE IF NOT EXISTS spielstand ( CREATE TABLE IF NOT EXISTS spielstand (
spieler TEXT PRIMARY KEY, spieler TEXT PRIMARY KEY,
raum_id TEXT raum_id TEXT,
start_zeit REAL,
fertig_zeit REAL
); );
INSERT INTO raeume (id, name, beschreibung, raetsel_frage, raetsel_antwort) VALUES INSERT INTO raeume (id, name, beschreibung, raetsel_frage, raetsel_antwort) VALUES