Add player timing and random storytelling
This commit is contained in:
parent
a406822272
commit
69bad97bd0
2 changed files with 43 additions and 6 deletions
41
app/app.py
41
app/app.py
|
|
@ -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> '
|
||||
return html
|
||||
|
|
|
|||
|
|
@ -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.")
|
||||
|
|
|
|||
Loading…
Reference in a new issue