| from PIL import Image, ImageDraw, ImageFont |
| import os |
|
|
| os.makedirs("wasd_ui", exist_ok=True) |
|
|
| |
| key_size = (48, 48) |
| corner = 10 |
| bg_padding = 6 |
| font = ImageFont.truetype("arial.ttf", 28) |
|
|
| def rounded_rect(im, bbox, radius, fill): |
| draw = ImageDraw.Draw(im, "RGBA") |
| draw.rounded_rectangle(bbox, radius=radius, fill=fill) |
|
|
| |
| bg_width = key_size[0] * 3 + bg_padding * 4 |
| bg_height = key_size[1] * 2 + bg_padding * 4 |
| ui_bg = Image.new("RGBA", (bg_width, bg_height), (0,0,0,0)) |
| rounded_rect(ui_bg, (0,0,bg_width,bg_height), corner, (0,0,0,140)) |
| ui_bg.save("wasd_ui/ui_background.png") |
|
|
| keys = ["W","A","S","D"] |
|
|
| def draw_key(char, active): |
| im = Image.new("RGBA", key_size, (0,0,0,0)) |
| rounded_rect(im, (0,0,key_size[0],key_size[1]), corner, |
| (255,255,255,230) if active else (200,200,200,180)) |
| draw = ImageDraw.Draw(im) |
| color = (0,0,0) if active else (50,50,50) |
| w,h = draw.textsize(char, font=font) |
| draw.text(((key_size[0]-w)//2,(key_size[1]-h)//2), |
| char, font=font, fill=color) |
| return im |
|
|
| for k in keys: |
| draw_key(k, False).save(f"wasd_ui/key_{k}_idle.png") |
| draw_key(k, True).save(f"wasd_ui/key_{k}_active.png") |
|
|
| print("✅ WASD UI assets generated in ./wasd_ui/") |