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 os
|
||||||
|
import random
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import time
|
import time
|
||||||
from flask import Flask, redirect, request, session
|
from flask import Flask, redirect, request, session
|
||||||
|
|
@ -31,6 +32,40 @@ def get_highscores(limit=10):
|
||||||
return rows
|
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("/", methods=["GET", "POST"])
|
||||||
@app.route("/app", methods=["GET", "POST"])
|
@app.route("/app", 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 "<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>'
|
return 'Leider falsch. <a href="/app/?room=' + str(room_id) + '">nochmal</a>'
|
||||||
|
|
||||||
html = "<h1>" + r["name"] + "</h1>"
|
html = get_story_html(r, ausgaenge)
|
||||||
html += "<p>" + r["beschreibung"] + "</p>"
|
|
||||||
html += '<form method="post">' + r["raetsel_frage"] + ' <input name="antwort"><button>OK</button></form>'
|
html += '<form method="post">' + r["raetsel_frage"] + ' <input name="antwort"><button>OK</button></form>'
|
||||||
return html
|
return html
|
||||||
|
|
||||||
html = "<h1>" + r["name"] + "</h1>"
|
html = get_story_html(r, ausgaenge)
|
||||||
html += "<p>" + r["beschreibung"] + "</p>"
|
|
||||||
for a in ausgaenge:
|
for a in ausgaenge:
|
||||||
html += '<a href="/app/?room=' + str(a["nach_raum"]) + '">' + a["richtung"] + '</a> '
|
html += '<a href="/app/?room=' + str(a["nach_raum"]) + '">' + a["richtung"] + '</a> '
|
||||||
return html
|
return html
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
|
import os
|
||||||
import sqlite3
|
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("""
|
db.executescript("""
|
||||||
DROP TABLE IF EXISTS raeume;
|
DROP TABLE IF EXISTS raeume;
|
||||||
|
|
@ -43,4 +47,4 @@ INSERT INTO ausgaenge (von_raum, richtung, nach_raum) VALUES
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
db.close()
|
db.close()
|
||||||
print("Datenbank adventure.db angelegt.")
|
print(f"Datenbank {DB_PATH} angelegt.")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue