Skip to content

Commit

Permalink
refactor; update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
CedarGroveStudios committed Jul 25, 2022
1 parent 1981aae commit b67762a
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 84 deletions.
85 changes: 43 additions & 42 deletions code/snowman_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# SPDX-License-Identifier: MIT

# snowman_code.py
# 2022-07-01 v1.2
# 2022-07-24 v1.2

"""A two-layer snowstorm animation with a snowman bitmap image. STORM_INTENSITY
controls the maximum number of foreground and background snowflakes; 0 for
Expand All @@ -17,25 +17,25 @@
from cedargrove_palettefader import PaletteFader

# fmt: off
DISP_BRIGHTNESS = 0.5 # float: 0.1 to 1.0
DISP_BRIGHTNESS = 0.1 # float: 0.1 to 1.0
STORM_INTENSITY = 1 # int: 0 to 3
STORM_INTENSITY = int(max(0, min(STORM_INTENSITY, 3)))

max_foreground_flakes = STORM_INTENSITY * 30
max_background_flakes = STORM_INTENSITY * 10
max_fg_flake_count = STORM_INTENSITY * 30
max_bg_flake_count = STORM_INTENSITY * 10

# Set up a few lists to store animation parameters for each snowflake.
foreground_flake_time = []
background_flake_time = []
foreground_flake_displ = []
background_flake_displ = []
fg_flake_duration = []
bg_flake_duration = []
fg_flake_displacement = []
bg_flake_displacement = []

display = Matrix(bit_depth=6).display
display.rotation = 180 # Portrait orientation; MatrixPortal USB connect on bottom

center_group = displayio.Group() # The primary display group
foreground_flakes = displayio.Group()
background_flakes = displayio.Group()
fg_flakes = displayio.Group()
bg_flakes = displayio.Group()

# Define the snowman and snowflake color palettes.
snowman_palette_source = displayio.Palette(5)
Expand All @@ -58,45 +58,46 @@

# Build the foreground and background snowflake layers.
if STORM_INTENSITY != 0:
for i in range(0, max_foreground_flakes):
for i in range(0, max_fg_flake_count):
snowflake = vectorio.Circle(
pixel_shader=fg_flake_faded.palette,
x=rn.randrange(0, 63),
y=1 + (int(32 * (i / max_background_flakes)) % 32),
y=1 + (int(32 * (i / max_bg_flake_count)) % 32),
radius=1,
)
foreground_flakes.append(snowflake)
foreground_flake_time.append(rn.random() / max_foreground_flakes)
foreground_flake_displ.append(rn.randrange(1, 3))
fg_flakes.append(snowflake)
fg_flake_duration.append(rn.random() / max_fg_flake_count)
fg_flake_displacement.append(rn.randrange(1, 3))

for i in range(0, max_background_flakes):
for i in range(0, max_bg_flake_count):
snowflake = vectorio.Circle(
pixel_shader=bk_flake_faded.palette,
x=rn.randrange(3, 63),
y=1 + (int(32 * (i / max_background_flakes)) % 32),
y=1 + (int(32 * (i / max_bg_flake_count)) % 32),
radius=1,
)
background_flakes.append(snowflake)
background_flake_time.append(rn.random() / max_foreground_flakes)
background_flake_displ.append(rn.randrange(1, 3))
bg_flakes.append(snowflake)
bg_flake_duration.append(rn.random() / max_fg_flake_count)
bg_flake_displacement.append(rn.randrange(1, 3))

display.show(center_group)

with open("/snowman_32_64.bmp", "rb") as f:
# Load landscape snowman bitmap
with open("/snowman_32_64.bmp", "rb") as snowman_bitmap:

# Add and display the background snowflake layer.
if STORM_INTENSITY != 0:
center_group.append(background_flakes)
center_group.append(bg_flakes)

# Retrieve and display the snowman bitmap graphic file.
snowman = displayio.OnDiskBitmap(f)
# Display the snowman bitmap graphic file.
snowman = displayio.OnDiskBitmap(snowman_bitmap)
snowman = displayio.TileGrid(snowman, pixel_shader=snowman_faded.palette, x=-6)
center_group.append(snowman)

# Add and display the foreground snowflake layer.
# If STORM_INTENSITY is zero, display the snowman forever.
if STORM_INTENSITY != 0:
center_group.append(foreground_flakes)
center_group.append(fg_flakes)
else:
while True:
pass
Expand All @@ -106,22 +107,22 @@

# Animate the background and foreground snowflakes forever.
while True:
flake = rn.randrange(0, max_foreground_flakes)
foreground_flakes[flake].x = (
foreground_flakes[flake].x - foreground_flake_displ[i]
flake = rn.randrange(0, max_fg_flake_count)
fg_flakes[flake].x = (
fg_flakes[flake].x - fg_flake_displacement[i]
)
if foreground_flakes[flake].x < -2:
foreground_flakes[flake].x = 66
foreground_flake_time[flake] = rn.random() / max_foreground_flakes
foreground_flake_displ[flake] = rn.randrange(1, 3)
time.sleep(foreground_flake_time[flake])

flake = rn.randrange(0, max_background_flakes)
background_flakes[flake].x = (
background_flakes[flake].x - background_flake_displ[i]
if fg_flakes[flake].x < -2:
fg_flakes[flake].x = 66
fg_flake_duration[flake] = rn.random() / max_fg_flake_count
fg_flake_displacement[flake] = rn.randrange(1, 3)
time.sleep(fg_flake_duration[flake])

flake = rn.randrange(0, max_bg_flake_count)
bg_flakes[flake].x = (
bg_flakes[flake].x - bg_flake_displacement[i]
)
if background_flakes[flake].x < 4:
background_flakes[flake].x = 66
background_flake_time[flake] = rn.random() / max_background_flakes
background_flake_displ[flake] = rn.randrange(1, 3)
time.sleep(background_flake_time[flake])
if bg_flakes[flake].x < 4:
bg_flakes[flake].x = 66
bg_flake_duration[flake] = rn.random() / max_bg_flake_count
bg_flake_displacement[flake] = rn.randrange(1, 3)
time.sleep(bg_flake_duration[flake])
85 changes: 43 additions & 42 deletions snowman_bundle/code.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# SPDX-License-Identifier: MIT

# snowman_code.py
# 2022-07-01 v1.2
# 2022-07-24 v1.2

"""A two-layer snowstorm animation with a snowman bitmap image. STORM_INTENSITY
controls the maximum number of foreground and background snowflakes; 0 for
Expand All @@ -17,25 +17,25 @@
from cedargrove_palettefader import PaletteFader

# fmt: off
DISP_BRIGHTNESS = 0.5 # float: 0.1 to 1.0
DISP_BRIGHTNESS = 0.1 # float: 0.1 to 1.0
STORM_INTENSITY = 1 # int: 0 to 3
STORM_INTENSITY = int(max(0, min(STORM_INTENSITY, 3)))

max_foreground_flakes = STORM_INTENSITY * 30
max_background_flakes = STORM_INTENSITY * 10
max_fg_flake_count = STORM_INTENSITY * 30
max_bg_flake_count = STORM_INTENSITY * 10

# Set up a few lists to store animation parameters for each snowflake.
foreground_flake_time = []
background_flake_time = []
foreground_flake_displ = []
background_flake_displ = []
fg_flake_duration = []
bg_flake_duration = []
fg_flake_displacement = []
bg_flake_displacement = []

display = Matrix(bit_depth=6).display
display.rotation = 180 # Portrait orientation; MatrixPortal USB connect on bottom

center_group = displayio.Group() # The primary display group
foreground_flakes = displayio.Group()
background_flakes = displayio.Group()
fg_flakes = displayio.Group()
bg_flakes = displayio.Group()

# Define the snowman and snowflake color palettes.
snowman_palette_source = displayio.Palette(5)
Expand All @@ -58,45 +58,46 @@

# Build the foreground and background snowflake layers.
if STORM_INTENSITY != 0:
for i in range(0, max_foreground_flakes):
for i in range(0, max_fg_flake_count):
snowflake = vectorio.Circle(
pixel_shader=fg_flake_faded.palette,
x=rn.randrange(0, 63),
y=1 + (int(32 * (i / max_background_flakes)) % 32),
y=1 + (int(32 * (i / max_bg_flake_count)) % 32),
radius=1,
)
foreground_flakes.append(snowflake)
foreground_flake_time.append(rn.random() / max_foreground_flakes)
foreground_flake_displ.append(rn.randrange(1, 3))
fg_flakes.append(snowflake)
fg_flake_duration.append(rn.random() / max_fg_flake_count)
fg_flake_displacement.append(rn.randrange(1, 3))

for i in range(0, max_background_flakes):
for i in range(0, max_bg_flake_count):
snowflake = vectorio.Circle(
pixel_shader=bk_flake_faded.palette,
x=rn.randrange(3, 63),
y=1 + (int(32 * (i / max_background_flakes)) % 32),
y=1 + (int(32 * (i / max_bg_flake_count)) % 32),
radius=1,
)
background_flakes.append(snowflake)
background_flake_time.append(rn.random() / max_foreground_flakes)
background_flake_displ.append(rn.randrange(1, 3))
bg_flakes.append(snowflake)
bg_flake_duration.append(rn.random() / max_fg_flake_count)
bg_flake_displacement.append(rn.randrange(1, 3))

display.show(center_group)

with open("/snowman_32_64.bmp", "rb") as f:
# Load landscape snowman bitmap
with open("/snowman_32_64.bmp", "rb") as snowman_bitmap:

# Add and display the background snowflake layer.
if STORM_INTENSITY != 0:
center_group.append(background_flakes)
center_group.append(bg_flakes)

# Retrieve and display the snowman bitmap graphic file.
snowman = displayio.OnDiskBitmap(f)
# Display the snowman bitmap graphic file.
snowman = displayio.OnDiskBitmap(snowman_bitmap)
snowman = displayio.TileGrid(snowman, pixel_shader=snowman_faded.palette, x=-6)
center_group.append(snowman)

# Add and display the foreground snowflake layer.
# If STORM_INTENSITY is zero, display the snowman forever.
if STORM_INTENSITY != 0:
center_group.append(foreground_flakes)
center_group.append(fg_flakes)
else:
while True:
pass
Expand All @@ -106,22 +107,22 @@

# Animate the background and foreground snowflakes forever.
while True:
flake = rn.randrange(0, max_foreground_flakes)
foreground_flakes[flake].x = (
foreground_flakes[flake].x - foreground_flake_displ[i]
flake = rn.randrange(0, max_fg_flake_count)
fg_flakes[flake].x = (
fg_flakes[flake].x - fg_flake_displacement[i]
)
if foreground_flakes[flake].x < -2:
foreground_flakes[flake].x = 66
foreground_flake_time[flake] = rn.random() / max_foreground_flakes
foreground_flake_displ[flake] = rn.randrange(1, 3)
time.sleep(foreground_flake_time[flake])

flake = rn.randrange(0, max_background_flakes)
background_flakes[flake].x = (
background_flakes[flake].x - background_flake_displ[i]
if fg_flakes[flake].x < -2:
fg_flakes[flake].x = 66
fg_flake_duration[flake] = rn.random() / max_fg_flake_count
fg_flake_displacement[flake] = rn.randrange(1, 3)
time.sleep(fg_flake_duration[flake])

flake = rn.randrange(0, max_bg_flake_count)
bg_flakes[flake].x = (
bg_flakes[flake].x - bg_flake_displacement[i]
)
if background_flakes[flake].x < 4:
background_flakes[flake].x = 66
background_flake_time[flake] = rn.random() / max_background_flakes
background_flake_displ[flake] = rn.randrange(1, 3)
time.sleep(background_flake_time[flake])
if bg_flakes[flake].x < 4:
bg_flakes[flake].x = 66
bg_flake_duration[flake] = rn.random() / max_bg_flake_count
bg_flake_displacement[flake] = rn.randrange(1, 3)
time.sleep(bg_flake_duration[flake])

0 comments on commit b67762a

Please sign in to comment.