Refactoring: Project structure, sprite stairs & fog masks rendering fix
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
import numpy as np
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
# Game Boy Hardware Colors (Green Palette)
|
||||
PALETTE = [
|
||||
224, 248, 207, # 0
|
||||
134, 192, 108, # 1
|
||||
48, 104, 80, # 2
|
||||
7, 24, 33 # 3
|
||||
] + [0] * (256 * 3 - 12)
|
||||
|
||||
# Scarier diagonal ghost
|
||||
GHOST_DR_STAND = [
|
||||
"0000033333000000",
|
||||
"0000322222300000",
|
||||
"0003211111230000",
|
||||
"0003113113130000",
|
||||
"0003112221130000",
|
||||
"0031113331130000",
|
||||
"0032111211133000",
|
||||
"0003211111111300",
|
||||
"0000322111113000",
|
||||
"0000322111330000",
|
||||
"0000032213000000",
|
||||
"0000032213000000",
|
||||
"0000032113000000",
|
||||
"0000321330000000",
|
||||
"0000033000000000",
|
||||
"0000000000000000"
|
||||
]
|
||||
|
||||
GHOST_DR_WALK = [
|
||||
"0000033333000000",
|
||||
"0000322222300000",
|
||||
"0003211111230000",
|
||||
"0003113113130000",
|
||||
"0003112221130000",
|
||||
"0003113331130000",
|
||||
"0032111211133000",
|
||||
"0032211111111300",
|
||||
"0003221111113000",
|
||||
"0000322111330000",
|
||||
"0000032213000000",
|
||||
"0000032213000000",
|
||||
"0000032113000000",
|
||||
"0000003213000000",
|
||||
"0000000330000000",
|
||||
"0000000000000000"
|
||||
]
|
||||
|
||||
GHOST_UR_STAND = [
|
||||
"0000033333000000",
|
||||
"0000322222300000",
|
||||
"0003211111230000",
|
||||
"0003111111130000",
|
||||
"0003111111130000",
|
||||
"0003111111130000",
|
||||
"0003211111133000",
|
||||
"0000321111111300",
|
||||
"0000322111113000",
|
||||
"0000322111330000",
|
||||
"0000032213000000",
|
||||
"0000032213000000",
|
||||
"0000032113000000",
|
||||
"0000321330000000",
|
||||
"0000033000000000",
|
||||
"0000000000000000"
|
||||
]
|
||||
|
||||
GHOST_UR_WALK = [
|
||||
"0000033333000000",
|
||||
"0000322222300000",
|
||||
"0003211111230000",
|
||||
"0003111111130000",
|
||||
"0003111111130000",
|
||||
"0003111111130000",
|
||||
"0003211111133000",
|
||||
"0000321111111300",
|
||||
"0000322111113000",
|
||||
"0000322111330000",
|
||||
"0000032213000000",
|
||||
"0000032213000000",
|
||||
"0000032113000000",
|
||||
"0000003213000000",
|
||||
"0000000330000000",
|
||||
"0000000000000000"
|
||||
]
|
||||
|
||||
def draw_frame(draw, grid, x_off):
|
||||
for y in range(16):
|
||||
for x in range(16):
|
||||
val = int(grid[y][x])
|
||||
draw.point((x_off + x, y), fill=val)
|
||||
|
||||
ghost_img = Image.new("P", (128, 16), 0)
|
||||
ghost_img.putpalette(PALETTE)
|
||||
|
||||
dr_s = Image.new("P", (16, 16), 0); dr_s.putpalette(PALETTE); draw_frame(ImageDraw.Draw(dr_s), GHOST_DR_STAND, 0)
|
||||
dr_w = Image.new("P", (16, 16), 0); dr_w.putpalette(PALETTE); draw_frame(ImageDraw.Draw(dr_w), GHOST_DR_WALK, 0)
|
||||
ur_s = Image.new("P", (16, 16), 0); ur_s.putpalette(PALETTE); draw_frame(ImageDraw.Draw(ur_s), GHOST_UR_STAND, 0)
|
||||
ur_w = Image.new("P", (16, 16), 0); ur_w.putpalette(PALETTE); draw_frame(ImageDraw.Draw(ur_w), GHOST_UR_WALK, 0)
|
||||
|
||||
dl_s = dr_s.transpose(Image.FLIP_LEFT_RIGHT)
|
||||
dl_w = dr_w.transpose(Image.FLIP_LEFT_RIGHT)
|
||||
ul_s = ur_s.transpose(Image.FLIP_LEFT_RIGHT)
|
||||
ul_w = ur_w.transpose(Image.FLIP_LEFT_RIGHT)
|
||||
|
||||
ghost_img.paste(dr_s, (0 * 16, 0))
|
||||
ghost_img.paste(dr_w, (1 * 16, 0))
|
||||
ghost_img.paste(dl_s, (2 * 16, 0))
|
||||
ghost_img.paste(dl_w, (3 * 16, 0))
|
||||
ghost_img.paste(ul_s, (4 * 16, 0))
|
||||
ghost_img.paste(ul_w, (5 * 16, 0))
|
||||
ghost_img.paste(ur_s, (6 * 16, 0))
|
||||
ghost_img.paste(ur_w, (7 * 16, 0))
|
||||
|
||||
ghost_img.save('enemy.png')
|
||||
print("Saved enemy.png")
|
||||
Reference in New Issue
Block a user