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 (
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()
return db
@ -310,9 +319,10 @@ def seite_html(inhalt, klasse="puzzle"):
def highscore_html(db):
eintraege = db.execute(
"""
SELECT name, fertig_zeit - start_zeit AS dauer
FROM spieler
SELECT spieler, fertig_zeit - start_zeit AS dauer
FROM spielstand
WHERE fertig_zeit IS NOT NULL
AND start_zeit IS NOT NULL
ORDER BY dauer
LIMIT 10
"""
@ -369,8 +379,12 @@ def start():
)
spieler_id = cursor.lastrowid
db.execute(
"INSERT OR IGNORE INTO spielstand (spieler, raum_id) VALUES (?, ?)",
(name, "stadiontor"),
"INSERT OR IGNORE INTO spielstand (spieler, raum_id, start_zeit, fertig_zeit) VALUES (?, ?, ?, NULL)",
(name, "stadiontor", time.time()),
)
db.execute(
"UPDATE spielstand SET raum_id=?, start_zeit=? WHERE spieler=?",
("stadiontor", time.time(), name),
)
db.commit()
db.close()
@ -451,11 +465,17 @@ def raum(raum_id):
if antwort == richtige_antwort:
db = get_db()
spieler_id = session.get("spieler_id")
spieler_name = session.get("spieler") or session.get("spieler_name")
if spieler_id:
db.execute(
"UPDATE spieler SET fertig_zeit=? WHERE id=? AND fertig_zeit IS NULL",
(time.time(), spieler_id),
)
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 = (
"<h1>Geschafft!</h1>"

View file

@ -36,7 +36,9 @@ db.executescript(
CREATE TABLE IF NOT EXISTS spielstand (
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