from flask import Flask, request, session, redirect import sqlite3 app = Flask(__name__) app.secret_key = "Das ist deeeeer geheime Schlüssel." def get_db(): db = sqlite3.connect("adventure.db") db.row_factory = sqlite3.Row # Spalten per Name ansprechen return db @app.route("/", methods=["GET", "POST"]) def start(): if request.method == "POST": # Formular abgeschickt? name = request.form["name"].strip() if name != "": session["spieler"] = name # App merkt sich: das bist du db = get_db() db.execute( "INSERT OR IGNORE INTO spielstand (spieler, raum_id) VALUES (?, 1)", (name,) ) db.commit() db.close() return redirect("/app/raum/1") html = '

Verlies

' db = get_db() anzahl = db.execute("SELECT COUNT(*) AS n FROM spielstand").fetchone() html = html + '

' + str(anzahl["n"]) + ' Abenteurer waren schon hier.

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

Willkommen zurück, ' + session["spieler"] + '!

' \ + 'Weiterspielen
' db.close() return html + '
Dein Name: ' \ + '
' \ + '

Neues Abenteuer

' @app.route("/reset") def reset(): session.pop("spieler", None) # Session vergessen (DB bleibt!) return redirect("/app/") @app.route("/raum/", methods=["GET", "POST"]) def raum(id): db = get_db() if "spieler" in session: # angemeldet? 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"]: # Rätselraum? if request.method == "POST": if request.form["antwort"].strip() == r["raetsel_antwort"]: db.close() return "

Befreit!

" db.close() return 'Leider falsch. nochmal' db.close() return "

" + r["name"] + "

" + r["beschreibung"] + "

" \ + '
' + r["raetsel_frage"] \ + '
' ausgaenge = db.execute( "SELECT richtung, nach_raum FROM ausgaenge WHERE von_raum=?", (id,) ).fetchall() db.close() html = "

" + r["name"] + "

" html = html + "

" + r["beschreibung"] + "

" if "spieler" in session: html = html + '

Unterwegs als: ' + session["spieler"] + '

' for a in ausgaenge: html = html + '' \ + a["richtung"] + '   ' return html if __name__ == "__main__": app.run(host="0.0.0.0", port=9009)