Krabbe: ASCII-only, weiter sichtbar; Taucher (Scuba-Diver) neu
- Krabben-Zeichen von '°' (non-ASCII, wide-char-Problem) auf '.' umgestellt - steps_out 14→22: Krabbe läuft weiter aus dem Schloss heraus - add_diver(): Scuba-Taucher mit 2-Frame-Animation, Sauerstoffblasen beim Tod
This commit is contained in:
parent
566bbd9d0e
commit
1f053822ff
1 changed files with 59 additions and 4 deletions
|
|
@ -301,7 +301,7 @@ class Aquarium:
|
|||
|
||||
fns = [self.add_whale, self.add_monster, self.add_swan,
|
||||
self.add_ducks, self.add_dolphins,
|
||||
self.add_seahorse, self.add_squid]
|
||||
self.add_seahorse, self.add_squid, self.add_diver]
|
||||
if not self.cfg.no_ship:
|
||||
fns.append(self.add_ship)
|
||||
if not self.cfg.no_shark and not self.cfg.vegan:
|
||||
|
|
@ -1355,6 +1355,60 @@ mmmmmm
|
|||
death_cb=lambda e, aq: aq.random_object(e),
|
||||
))
|
||||
|
||||
# ── Diver (Taucher) ──────────────────────────────────────────────────────
|
||||
|
||||
def add_diver(self, dead=None):
|
||||
diver_r0 = _p(r"""
|
||||
O
|
||||
\-|>
|
||||
/\
|
||||
""")
|
||||
diver_r1 = _p(r"""
|
||||
O
|
||||
/-|>
|
||||
\/
|
||||
""")
|
||||
diver_l0 = _p(r"""
|
||||
O
|
||||
<|-/
|
||||
/\
|
||||
""")
|
||||
diver_l1 = _p(r"""
|
||||
O
|
||||
<|-\
|
||||
\/
|
||||
""")
|
||||
mask_r = _p("""
|
||||
y
|
||||
wccy
|
||||
gg
|
||||
""")
|
||||
mask_l = _p("""
|
||||
y
|
||||
yccw
|
||||
gg
|
||||
""")
|
||||
going_right = random.random() < 0.5
|
||||
speed = random.uniform(0.5, 1.0) * (1 if going_right else -1)
|
||||
if going_right:
|
||||
x, frames, mask = -6, [diver_r0, diver_r1], mask_r
|
||||
else:
|
||||
x, frames, mask = self.cols - 2, [diver_l0, diver_l1], mask_l
|
||||
y = random.randint(9, max(10, self.rows - 5))
|
||||
|
||||
def on_death(e, aq):
|
||||
aq.add_bubble(e)
|
||||
aq.random_object(e)
|
||||
|
||||
self._add(Entity(
|
||||
frames=frames, masks=[mask, mask],
|
||||
x=x, y=y,
|
||||
cb_args=[speed, 0, 0, 0.2],
|
||||
default_color='c',
|
||||
die_offscreen=True,
|
||||
death_cb=on_death,
|
||||
))
|
||||
|
||||
# ── Predation (--bloody) ─────────────────────────────────────────────────
|
||||
|
||||
def _check_predation(self):
|
||||
|
|
@ -1407,8 +1461,9 @@ mmmmmm
|
|||
elif st == 1: # opening
|
||||
if self._cs_portcullis and not self._cs_portcullis.alive:
|
||||
gx, gy = self._gate_pos()
|
||||
crab_f0 = ['(°w°)', '/| |\\']
|
||||
crab_f1 = ['(°w°)', '\\| |/']
|
||||
# ASCII-only crab to avoid wide-char rendering issues
|
||||
crab_f0 = ['(._.)', '/| |\\']
|
||||
crab_f1 = ['(._.)', '\\| |/']
|
||||
mask = [' yWy ', ' ']
|
||||
c = CrabEntity(
|
||||
frames=[crab_f0, crab_f1], masks=[mask, mask],
|
||||
|
|
@ -1416,7 +1471,7 @@ mmmmmm
|
|||
cb_args=[-1, 0, 0, 0.25],
|
||||
default_color='y',
|
||||
die_offscreen=False,
|
||||
steps_out=14,
|
||||
steps_out=22, # walk further so crab is clearly visible
|
||||
entity_type='crab',
|
||||
)
|
||||
self._add(c)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue