...
from p5 import *
def setup():
size(300, 300)
def draw():
background(240)
house(LEFT, TOP)
def house(halign=CENTER, valign=CENTER):
...
run()
Details for the house
function.
Show me
def house(halign=CENTER, valign=CENTER):
WALL_WIDTH = 100
WALL_HEIGHT = WALL_WIDTH / 1.7
ROOF_HEIGHT = WALL_HEIGHT * 0.7
CHIMNEY_WIDTH = WALL_WIDTH * 0.15
CHIMNEY_HEIGHT = ROOF_HEIGHT * 0.9
DOOR_WIDTH = WALL_WIDTH * 0.2
DOOR_HEIGHT = WALL_HEIGHT * 0.8
WINDOW_WIDTH = (WALL_WIDTH - DOOR_WIDTH) * 0.6 / 2
WINDOW_HEIGHT = WALL_HEIGHT * 0.5
TOTAL_WIDTH = WALL_WIDTH
TOTAL_HEIGHT = WALL_HEIGHT + ROOF_HEIGHT
offset_x = 0 if halign == LEFT else (-TOTAL_WIDTH/2 if halign == CENTER else -TOTAL_WIDTH)
offset_y = 0 if valign == TOP else (-TOTAL_HEIGHT/2 if valign == CENTER else -TOTAL_HEIGHT)
push_style()
push_matrix()
translate(offset_x, offset_y)
translate(50, 50)
# Wall
fill("white")
rect_mode(CORNER)
rect(0, ROOF_HEIGHT, WALL_WIDTH, WALL_HEIGHT)
# Chimney
fill("white")
rect_mode(CENTER)
rect(WALL_WIDTH/4, ROOF_HEIGHT - CHIMNEY_HEIGHT/2, CHIMNEY_WIDTH, CHIMNEY_HEIGHT)
# Roof
fill("red")
triangle(0, ROOF_HEIGHT, WALL_WIDTH, ROOF_HEIGHT, WALL_WIDTH/2, 0)
# Door
fill("green")
rect_mode(CENTER)
rect(WALL_WIDTH/2, TOTAL_HEIGHT - DOOR_HEIGHT/2, DOOR_WIDTH, DOOR_HEIGHT)
# Windows
fill("skyblue")
rect_mode(CENTER)
x1 = (WALL_WIDTH - DOOR_WIDTH) / 2 / 2
x2 = WALL_WIDTH - x1
y = TOTAL_HEIGHT - DOOR_HEIGHT + WINDOW_HEIGHT/2
rect(x1, y, WINDOW_WIDTH, WINDOW_HEIGHT)
rect(x2, y, WINDOW_WIDTH, WINDOW_HEIGHT)
pop_style()
pop_matrix()