-
Notifications
You must be signed in to change notification settings - Fork 1
/
__main__.py
106 lines (89 loc) · 2.49 KB
/
__main__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
"""2024-05-17
Grade e círculos 10
Inspirado por um sketch to Alexandre Villares
gif
Sketch,py5,CreativeCoding,abav
"""
from random import choice
import py5
import py5_tools
from utils import helpers
sketch = helpers.info_for_sketch(__file__, __doc__)
GRADE = []
QUADRADO = 80
CORES = [
(0, 0, 0),
(127, 143, 110),
(179, 176, 133),
(200, 200, 200),
(212, 198, 170),
(218, 211, 189),
(90, 119, 168),
(187, 137, 30),
(30, 30, 30),
(40, 50, 60),
]
POS = [
(0, 0),
(0, QUADRADO),
(QUADRADO / 2, QUADRADO / 2),
(QUADRADO / 2, 0),
(0, QUADRADO / 2),
(QUADRADO / 2, QUADRADO),
(QUADRADO, QUADRADO / 2),
(QUADRADO, QUADRADO),
(QUADRADO, 0),
]
def setup():
global PG
py5.size(helpers.LARGURA, helpers.ALTURA, py5.P3D)
for idy, y in enumerate(range(-300, 300, 100), 1):
for idx, x in enumerate(range(-300, 300, 100), 1):
pg = py5.create_graphics(QUADRADO, QUADRADO)
fundo = (52 + idx, 140 + idx + idy, 89 + idy)
num_circulos = py5.random_int(3, 5)
circulos = []
for _ in range(num_circulos):
pos = choice(POS)
tamanho = py5.random_int(2, 80)
passo = py5.TWO_PI / py5.random_int(2, 40)
cor = choice(CORES)
circulos.append((pos, tamanho, cor))
GRADE.append((pg, (x, y), (idx, idy), fundo, passo, circulos))
def draw():
py5.background(52, 140, 89)
f = py5.frame_count
i = 0
with py5.push_matrix():
py5.translate(py5.width / 2, py5.height / 2)
rotacao = py5.sin(py5.radians(f * 2) + i * 2)
py5.rotate(rotacao)
for pg, (x, y), (idx, idy), fundo, passo, circulos in GRADE:
pg.begin_draw()
pg.background(*fundo)
for circulo in circulos:
(xc, yc), d, cor = circulo
s = py5.cos(py5.radians(f * 2) + i * passo)
d += 80 * s + idx
pg.fill(*cor)
pg.circle(xc, yc, d)
pg.end_draw()
py5.image(pg, x, y)
i += 1
helpers.write_legend(sketch=sketch, frame="#000")
def key_pressed():
key = py5.key
if key == " ":
save_and_close()
def save_and_close():
py5.no_loop()
py5.exit_sketch()
if __name__ == "__main__":
py5_tools.animated_gif(
f"{sketch.path}/{sketch.day}.gif",
count=30,
period=0.1,
duration=0.01,
block=False,
)
py5.run_sketch()