Grade de Porta

2023-10-21

"""2023-10-19"""
from helpers import HEIGHT
from helpers import save_image
from helpers import WIDTH
from helpers import write_legend
from pathlib import Path
from random import shuffle

import py5


IMG_NAME = Path(__file__).name.replace(".py", "")

COR_SELO = py5.color(188, 0, 45)

CORES = [
    py5.color(223, 227, 16),
]


def popula_area(xi, yi, xf, yf, cores, borda, exp):
    passo_x = (xf - xi) / exp
    passo_y = (yf - yi) / exp
    for idy in range(0, exp):
        y0 = yi + (idy * passo_y)
        y = y0 + (borda // 2)
        tamanho = (y + passo_y - (borda // 2)) - y
        for idx in range(0, exp):
            x0 = xi + (idx * passo_x)
            x = x0 + (borda // 2)
            cor = cores[(idx + idy) % len(cores)]
            py5.stroke(cor)
            py5.fill(cor)
            py5.square(x, y, tamanho)
    tamanho = xf - xi
    x = tamanho // 2 + xi
    y = tamanho // 2 + yi
    tamanho = tamanho // 3
    py5.stroke(COR_SELO)
    py5.fill(COR_SELO)
    py5.circle(x, y, tamanho)


def setup():
    py5.size(WIDTH, HEIGHT, py5.P3D)
    py5.background(py5.color(0))
    x0 = 40
    x1 = WIDTH - x0
    y0 = 40
    y1 = HEIGHT - y0
    passos = 3
    exp = 7
    borda = 20
    borda_interna = 6
    passo_x = (x1 - x0) // passos
    passo_y = (y1 - y0) // passos
    for idy in range(0, passos):
        yi = y0 + (idy * passo_y) + (borda // 2)
        yf = yi + passo_y - (borda // 2)
        for idx in range(0, passos):
            xi = x0 + (idx * passo_x) + (borda // 2)
            xf = xi + passo_x - (borda // 2)
            popula_area(xi, yi, xf, yf, CORES, borda_interna, exp)

    write_legend([py5.color(255)], IMG_NAME)


def key_pressed():
    key = py5.key
    if key == " ":
        save_and_close()


def save_and_close():
    py5.no_loop()
    save_image(IMG_NAME, "png")
    py5.exit_sketch()


py5.run_sketch()