- Python 100%
| assets | ||
| docs/screenshots | ||
| scripts | ||
| src/katzensause | ||
| tests | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| run_game.py | ||
Katzensause
Ein kleines Retro-Arcadespiel mit Pygame: Statt auf Moorhühner zu schießen, fütterst du vorbeifliegende Katzen mit einer Katzenfutter-Kanone. Treffer geben Punkte; an steigenden Punkteschwellen wählst du eine von drei zufälligen Verbesserungskarten.
Der Hintergrund besteht aus vier transparenten, unterschiedlich schnell scrollenden Parallax-Ebenen. Eine persistente Top-10 speichert Rekorde über mehrere Spielstarts hinweg; neue Einträge erhalten einen eigenen Gratulationsscreen mit Namenseingabe.
Nach 80 % der Rundenzeit erscheint eine große Boss-Katze. Ihre Hungerleiste muss mit mehreren Futtertreffern vollständig gefüllt werden. Verlässt sie hungrig den Bildschirm, ist die Runde sofort verloren.
Schnellstart
Vorausgesetzt wird Python 3.10 oder neuer.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e .
python run_game.py
Alternativ startet nach der Installation auch katzensause oder
python -m katzensause.
Steuerung
| Eingabe | Aktion |
|---|---|
| Maus | Zielen |
| Linksklick | Futter abfeuern |
R oder Rechtsklick |
Nachladen |
Leertaste oder Mittelklick |
Katzensturm aktivieren |
1, 2, 3 |
Upgrade-Karte wählen |
P oder Esc |
Runde pausieren |
H im Hauptmenü |
Hilfe ein-/ausblenden |
Die Rundendauer wird zentral in config.py eingestellt. Schnellere Katzen sind
mehr wert. Treffer in kurzer Folge erhöhen den Schnurr-Combo-Multiplikator.
Beim Pausieren frieren Runde, Nachladen, Combos und Hintergrund vollständig ein.
Der Katzensturm lässt über mehrere Sekunden besonders viele Katzen erscheinen. Ein Balken am unteren Bildschirmrand zeigt seine verbleibende Laufzeit. Drei eigene Upgrades reduzieren den Cooldown, erhöhen die Katzenzahl oder verlängern die Dauer.
Highscores
Die besten zehn Ergebnisse erscheinen im Hauptmenü. Qualifiziert sich ein neues Ergebnis, wird nach der Runde der erreichte Platz angezeigt und ein Name mit bis zu zwölf Zeichen abgefragt. Nur vollständig überstandene Runden können in die Rangliste aufgenommen werden; entkommt die Boss-Katze, endet der Lauf als Niederlage.
Unter Windows liegt die persistente Datei unter
%LOCALAPPDATA%\Katzensause\highscores.json; auf anderen Plattformen wird ein
entsprechender benutzerspezifischer Datenordner verwendet. Das Spiel schreibt
die Datei atomar, damit ein Abbruch während des Speicherns die Rangliste nicht
beschädigt.
Architektur
assets/
source/ Rohatlanten
sprites/ transparente 64×64-Sprites
tiles/ 64×64-Umgebungstiles
parallax/ 64×64-Tiles für vier Alpha-Ebenen
scripts/
build_assets.py reproduzierbarer Atlas-Schnitt
src/katzensause/
entities/ Katzen, Boss-Katze, Projektile, Partikel
models/ Progression, Fähigkeiten, Upgrades und Highscores
scenes/ Menü, Spielrunde, Namenseingabe, Ergebnis
ui/ Karten und UI-Bausteine
world/ animierter Parallax-Hintergrund
assets.py zentraler Asset-Cache mit Fallbacks
config.py Balancing und Darstellung
main.py Fenster, Hauptschleife, Szenenwechsel
tests/ schnelle Logiktests ohne Fenster
Die Trennung hält Rendering, Eingabe und Spiellogik voneinander fern. Neues
Balancing gehört in config.py oder models/upgrades.py; neue bewegliche
Objekte in entities/; neue Bildschirmzustände in scenes/.
Grafiken austauschen
Alle konsumierten PNGs sind exakt 64×64 Pixel. Solange Dateiname und
Transparenz erhalten bleiben, können sie direkt ersetzt werden. Die vollständige
Zuordnung steht in src/katzensause/assets.py.
Wer neue 4×4-Atlanten verwenden möchte:
python -m pip install -e ".[dev]"
python scripts/build_assets.py
Das Skript erwartet die drei Atlasquellen unter assets/source/. Sprite- und
Parallax-Atlas verwenden Magenta (#ff00ff) als Chroma-Key; für die weichen
Parallax-Kanten liegt zusätzlich parallax_atlas_alpha.png als bereinigte
Pipeline-Quelle vor. Die generierten Platzhalter wurden mit dem
integrierten Bildgenerator als 16-Bit-Pixel-Art erzeugt und anschließend
verlustfrei in einzelne Projektassets überführt.
Tests und Qualität
python -m pip install -e ".[dev]"
pytest
ruff check .
Die Asset-Pipeline prüft zusätzlich das Atlasformat; der Laufzeitspeicher erzeugt bei fehlenden Dateien gut sichtbare Fallback-Kacheln statt mit einem schwer verständlichen Ladefehler abzubrechen.
Erweiterungsideen
- Animationen durch mehrere Frames pro Katzenart
- Soundeffekte und Musik über einen separaten Audio-Service
- weitere Katzenpfade, Wetterlagen und Upgrade-Synergien
- Controller- und Touch-Eingabe
