No description
- _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 |
||
|---|---|---|
| asciiquarium_ng.py | ||
| README.md | ||
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 }