v1.2: Log zeigt gewaehlte Sequenz (nie zweimal dieselbe), Anleitung vor Moduswahl (jede Runde), Roll-Sound-Kanal reserviert (Fix kein Sound), frueheres Abbremsen + Snap-Fenster 160px, 10s Cooldown am Ende, Sprueche nach Prozent (sayings.py), 56 Tests.

This commit is contained in:
Project Bridge committed 2026-11-01 11:38:16 +00:00
1 parent d970185e75
commit e3a0c5a57d
11 files changed
+319 -37

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
"""Lustige Sprüche zum Ergebnis.
Zielgruppe sind Jugendliche am Zukunftstag: lieber augenzwinkernd als fies.
Wer nichts tut, landet bei etwa 40-60 % – deshalb sind die Sprüche ab 70 %
lobend und darunter nur leicht frech.
"""
from __future__ import annotations
import random
#: Bei 100 % – der Wunsch aus dem Feedback.
CONTRACT_LINE = "100%! Drücke A und unterschreib gleich einen Vertrag im Lager!"
TOP_LINES = (
"Das war Lade-Profi-Niveau. Der Staplerfahrer will ein Autogramm.",
"So voll sieht dieser Auflieger selten aus – Respekt!",
"Da passt nicht mal mehr eine Müsliriegel-Packung rein. Stark!",
)
GREAT_LINES = (
"Sehr sauber geladen – damit würdest du im Lager sofort auffallen.",
"Das ist Tetris mit Koffern. Weiter so!",
"Fast Profi. Nur die letzte Lücke hat noch etwas Luft.",
)
GOOD_LINES = (
"Solide! Der Auflieger ist zufrieden, die Koffer auch.",
"Passt schon – ein bisschen Luft ist noch drin, aber das ist okay.",
"Ordentlich beladen. Kein Rekord, aber auch kein Chaos.",
)
MEH_LINES = (
"Naja … die Koffer sind drin. Irgendwie.",
"Da geht noch was – der Auflieger hat Platz für einen Koffer mehr.",
"Halb voll ist auch halb leer. Nächstes Mal!",
)
LOW_LINES = (
"Ui, da ist noch viel Luft drin. Die Koffer haben sich verlaufen.",
"Der Auflieger wartet noch auf Nachschub. Weiter probieren!",
"Eher Tetris im Anfänger-Modus – aber du bist dabei, das zählt.",
)
OUCH_LINES = (
"Der Auflieger ist noch fast leer – aber der Anfang ist gemacht!",
"Autsch. Weisst du was? Nochmal ist immer eine Option.",
"Fast leer. Dafür kann es jetzt nur noch aufwärts gehen.",
)
def saying_for(percent: float, rng: random.Random | None = None) -> str:
"""Passender Spruch zur erreichten Beladung."""
if percent >= 100:
return CONTRACT_LINE
if percent >= 85:
pool = TOP_LINES
elif percent >= 70:
pool = GREAT_LINES
elif percent >= 55:
pool = GOOD_LINES
elif percent >= 40:
pool = MEH_LINES
elif percent >= 20:
pool = LOW_LINES
else:
pool = OUCH_LINES
return (rng or random).choice(pool)