No description
Find a file
rene 0396ec83c6 Features: Opacity, Angelhaken, Predation, wl-relative Positionen, Resize-Fix
- _write_all(): Partial-Write-Fix (O_NONBLOCK stdin → stdout in iTerm2 PTY)
- Canvas.put_sprite(): opaque-Modus — nur Interior-Spaces werden schwarz gemalt,
  Leading/Trailing-Spaces bleiben transparent (kein schwarzer Block hinter Tieren)
- Entity: opaque=True als Default; Wellen/Schloss/Seegras explizit opaque=False
- wl = max(3, rows//3 - 3): Wasserlinie 3 Zeilen höher
- Fischanzahl: max(6, underwater_rows * cols // 320)
- Oberflächenobjekte (Schiff, Wal, Nessi, Schwan) mit wl-relativem y — bleiben
  bei Resize auf der Wasseroberfläche
- add_fishhook(): neu als Frame-Animation (Schnur wächst/schrumpft per Frame);
  weißes Schnur-Mask + gelber Haken (default_color y)
- _check_fishing(): Haken erkennt Fisch-Kollision, springt zur Rückzugsphase,
  injiziert Fisch-Zeile in verbleibende Frames → Fisch hängt am Haken
- _check_predation(): Hai frisst immer (mit Blut); --bloody aktiviert big_fish
  als weiteren Räuber; --vegan = keine Räuber
- HookEntity entfernt (ersetzt durch Frame-Animation)
- big_fish: entity_type gesetzt für Kollisionserkennung
- Krabbe: y = gy+1 (eine Zeile tiefer)
- Canvas.render(): \033[K am Ende jeder Zeile — löscht letzte Spalte ohne
  Pending-Wrap; behebt Stale-Content nach Resize
- \033[r beim Start: Scroll-Region-Reset
- --ruler Flag für Diagnose
2026-03-29 18:39:12 +02:00
asciiquarium_ng.py Features: Opacity, Angelhaken, Predation, wl-relative Positionen, Resize-Fix 2026-03-29 18:39:12 +02:00
README.md README: Installation, Parameter, Tiere, Unterschiede zum Perl-Original 2026-03-29 10:06:33 +02:00

asciiquarium-ng

Python-Port von asciiquarium mit echten RGB-Farben (Truecolor ANSI statt Curses), neuen Tieren und CLI-Parametern.

Installation

curl -fsSL https://git.motocamp.de/rene/asciiquarium/raw/branch/main/asciiquarium_ng.py \
    -o /usr/local/bin/asciiquarium
chmod +x /usr/local/bin/asciiquarium

Voraussetzung: Python 3.7+, nur stdlib (keine externen Pakete). Läuft auf Linux, macOS, WSL2. Kein Perl, kein Curses, keine CPAN-Module.

Verwendung

asciiquarium                  # normal starten
asciiquarium --bloody         # Haie fressen Fische (Splat-Animation)
asciiquarium --vegan          # keine Räuber (kein Hai, kein Angelhaken, kein großer Fisch)
asciiquarium --no-shark       # kein Hai
asciiquarium --no-ship        # kein Schiff
asciiquarium --speed 2        # doppelte Geschwindigkeit
asciiquarium --any-key        # beliebige Taste beendet (gut für Screensaver)

Tasten

Taste Funktion
q / Q / Esc / Ctrl-C Beenden
p Pause/Weiter
r / R Neu aufbauen (nach manueller Terminalgrößenänderung)

Tiere

  • Fische (8 Typen, zufällige Farben)
  • Wal mit Fontänen-Animation
  • Hai
  • Großer Fisch
  • Seemonster
  • Delfine (3er-Gruppe, Sprung-Animation)
  • Schwan
  • Enten (3er-Gruppe)
  • Schiff
  • Angelhaken
  • Seepferdchen (neu)
  • Tintenfisch (neu)
  • Krabbe (neu) — kommt periodisch aus dem Schlosstor (Falltor öffnet/schließt sich)

Unterschiede zum Perl-Original

  • Truecolor ANSI (\033[38;2;R;G;Bm) statt Curses-Farbpaare → Farben immer korrekt, unabhängig vom Terminal-Profil
  • CLI-Parameter (--bloody, --vegan, --speed, etc.)
  • Seepferdchen, Tintenfisch, Krabbe mit Falltor-Animation
  • Eine einzige Python-Datei, keine Abhängigkeiten

Screensaver (zsh)

# in ~/.zshrc:
TMOUT=300
TRAPALRM() { asciiquarium --any-key }