Add player timing and random storytelling

This commit is contained in:
Tahar Lamred & Theresa Nerz 2026-07-10 07:59:51 +02:00
parent a406822272
commit 69bad97bd0
2 changed files with 43 additions and 6 deletions

View file

@ -1,4 +1,5 @@
import os
import random
import sqlite3
import time
from flask import Flask, redirect, request, session
@ -31,6 +32,40 @@ def get_highscores(limit=10):
return rows
def get_story_html(room, exits):
mood = random.choice(
[
"Die Luft ist kalt, als würde das Verlies selbst atmen.",
"Ein feiner Staubschleier tanzt im Licht, als wolle er dir etwas zeigen.",
"Ein leises Knarren erfüllt den Raum, als hätte die Dunkelheit ein Auge geöffnet.",
]
)
hint = random.choice(
[
"Irgendwo in der Finsternis liegt ein Hinweis auf den nächsten Schritt.",
"Der Weg zum Ziel ist nicht immer der einfachste, aber er ist der richtige.",
"Jede Ecke scheint ein kleines Geheimnis zu verbergen.",
]
)
goal = random.choice(
[
"Dein Ziel ist klar: den Schatz zu finden, bevor die Tür sich wieder schließt.",
"Mit jedem Schritt näherst du dich dem letzten Geheimnis.",
"Ein letzter Atemzug, und der Weg wäre frei.",
]
)
directions = [exit_row["richtung"] for exit_row in exits]
falltuer = random.choice(directions) if directions else None
html = "<h1>" + room["name"] + "</h1>"
html += "<p>" + room["beschreibung"] + "</p>"
html += "<p>" + mood + " " + hint + " " + goal + "</p>"
if falltuer:
html += "<p>Im Schatten des Raums scheint ein möglicher Weg nach <strong>" + falltuer + "</strong> zu führen — vielleicht ist das die Falltür.</p>"
return html
@app.route("/", methods=["GET", "POST"])
@app.route("/app", methods=["GET", "POST"])
@app.route("/app/", methods=["GET", "POST"])
@ -99,13 +134,11 @@ def start():
return "<h1>Geschafft!</h1><p>Du hast den Schatz gefunden.</p><p><a href='/app/highscore'>Zum Highscore</a></p>"
return 'Leider falsch. <a href="/app/?room=' + str(room_id) + '">nochmal</a>'
html = "<h1>" + r["name"] + "</h1>"
html += "<p>" + r["beschreibung"] + "</p>"
html = get_story_html(r, ausgaenge)
html += '<form method="post">' + r["raetsel_frage"] + ' <input name="antwort"><button>OK</button></form>'
return html
html = "<h1>" + r["name"] + "</h1>"
html += "<p>" + r["beschreibung"] + "</p>"
html = get_story_html(r, ausgaenge)
for a in ausgaenge:
html += '<a href="/app/?room=' + str(a["nach_raum"]) + '">' + a["richtung"] + '</a> &nbsp; '
return html

View file

@ -1,6 +1,10 @@
import os
import sqlite3
db = sqlite3.connect("adventure.db") # Datei wird angelegt, falls nicht da
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DB_PATH = os.path.join(BASE_DIR, "adventure.db")
db = sqlite3.connect(DB_PATH) # Datei wird angelegt, falls nicht da
db.executescript("""
DROP TABLE IF EXISTS raeume;
@ -43,4 +47,4 @@ INSERT INTO ausgaenge (von_raum, richtung, nach_raum) VALUES
db.commit()
db.close()
print("Datenbank adventure.db angelegt.")
print(f"Datenbank {DB_PATH} angelegt.")