diff --git a/app/app.py b/app/app.py
index da82fe1..1583520 100644
--- a/app/app.py
+++ b/app/app.py
@@ -1,5 +1,6 @@
from flask import Flask, request, session, redirect
import sqlite3
+from datetime import datetime
app = Flask(__name__)
app.secret_key = "sneaky-snakes-snacken-snacks"
@@ -46,7 +47,7 @@ def layout(content):
}}
.card {{
- width: min(720px, 100%);
+ width: min(840px, 100%);
background: var(--card);
border: 1px solid var(--border);
border-radius: 22px;
@@ -120,6 +121,21 @@ def layout(content):
.exits {{
margin-top: 1rem;
}}
+
+ .highscore {{
+ margin-top: 1.5rem;
+ padding-top: 1rem;
+ border-top: 1px solid rgba(148, 163, 184, 0.15);
+ }}
+
+ ol {{
+ margin: 0.5rem 0 0;
+ padding-left: 1.3rem;
+ }}
+
+ li {{
+ margin: 0.35rem 0;
+ }}
{content}
@@ -127,119 +143,45 @@ def layout(content):
"""
+def ensure_columns():
+ db = get_db()
+ db.execute("""
+ CREATE TABLE IF NOT EXISTS highscore (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ spieler TEXT NOT NULL,
+ sekunden REAL NOT NULL,
+ gewonnen_am TEXT NOT NULL
+ )
+ """)
+ try:
+ db.execute("ALTER TABLE spielstand ADD COLUMN startzeit TEXT")
+ except sqlite3.OperationalError:
+ pass
+ try:
+ db.execute("ALTER TABLE spielstand ADD COLUMN fertig INTEGER DEFAULT 0")
+ except sqlite3.OperationalError:
+ pass
+ db.commit()
+ db.close()
+
+
+ensure_columns()
+
+
@app.route("/", methods=["GET", "POST"])
def start():
if request.method == "POST":
name = request.form["name"].strip()
if name != "":
session["spieler"] = name
+ session["startzeit"] = datetime.utcnow().isoformat()
+
db = get_db()
- db.execute(
- "INSERT OR IGNORE INTO spielstand (spieler, raum_id) VALUES (?, 1)",
+ row = db.execute(
+ "SELECT spieler FROM spielstand WHERE spieler=?",
(name,)
- )
- db.commit()
- db.close()
- return redirect("/app/raum/1")
+ ).fetchone()
- db = get_db()
- anzahl = db.execute("SELECT COUNT(*) AS n FROM spielstand").fetchone()["n"]
-
- html = "
Verlies
"
- html += f"
{anzahl} Abenteurer waren schon hier.
"
-
- if "spieler" in session:
- s = db.execute(
- "SELECT raum_id FROM spielstand WHERE spieler=?",
- (session["spieler"],)
- ).fetchone()
- if s:
- html += f"
Willkommen zurück, {session['spieler']}!
"
- html += f'
Weiterspielen'
- html += '
Neues Abenteuer'
-
- db.close()
-
- 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"]:
- db.close()
- return layout("""
- Du findest einen geilen 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)
- return redirect("/app/")
-
-
-if __name__ == "__main__":
- app.run(host="0.0.0.0", port=9008)
\ No newline at end of file
+ if row:
+ db.execute(
+ "UPDATE
\ No newline at end of file