No description
Find a file
2026-10-10 23:45:36 +02:00
assets erste version 2026-10-10 23:38:54 +02:00
docs/screenshots erste version 2026-10-10 23:38:54 +02:00
scripts erste version 2026-10-10 23:38:54 +02:00
src/katzensause erste version 2026-10-10 23:38:54 +02:00
tests erste version 2026-10-10 23:38:54 +02:00
.gitignore update .gitignore 2026-10-10 23:44:59 +02:00
LICENSE erste version 2026-10-10 23:38:54 +02:00
pyproject.toml erste version 2026-10-10 23:38:54 +02:00
README.md erste version 2026-10-10 23:38:54 +02:00
requirements.txt add requirements.txt 2026-10-10 23:43:24 +02:00
run_game.py erste version 2026-10-10 23:38:54 +02:00

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.

Spielrunde

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