kopia lustrzana https://github.com/villares/sketch-a-day
main
rodzic
f9d3ae7be7
commit
ba7e6541d4
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 511 KiB |
|
@ -0,0 +1,70 @@
|
|||
arrastando = -1 # -1 quer dizer nenhum círculo sendo arrastado
|
||||
circulos = [] # lista com coordenadas e tamanhos dos círculos
|
||||
NUM_CIRCULOS = 6
|
||||
|
||||
def setup():
|
||||
size(400, 400)
|
||||
strokeWeight(3)
|
||||
colorMode(HSB)
|
||||
sorteia_circulos(NUM_CIRCULOS)
|
||||
|
||||
def draw():
|
||||
background(200)
|
||||
# Queremos uma lista invertida da enumeração dos círculo
|
||||
i_circulos = list(enumerate(circulos))[::-1]
|
||||
# De forma a desenhar a lista do último para o primeiro
|
||||
for i, circulo in i_circulos:
|
||||
x, y, d = circulo
|
||||
if i == arrastando:
|
||||
stroke(0)
|
||||
else:
|
||||
stroke(255)
|
||||
fill(d - 15, 255, 255, 200)
|
||||
ellipse(x, y, d, d)
|
||||
|
||||
def keyPressed():
|
||||
if key == ' ':
|
||||
sorteia_circulos(NUM_CIRCULOS)
|
||||
|
||||
def mousePressed(): # quando um botão do mouse é apertado
|
||||
global arrastando
|
||||
for i, circulo in enumerate(circulos):
|
||||
x, y, d = circulo
|
||||
dist_mouse_circulo = dist(mouseX, mouseY, x, y)
|
||||
raio = d / 2
|
||||
if dist_mouse_circulo < raio:
|
||||
arrastando = i
|
||||
break # encerra o laço
|
||||
|
||||
def mouseReleased(): # quando um botão do mouse é solto
|
||||
global arrastando
|
||||
arrastando = -1
|
||||
|
||||
def mouseDragged(): # quando o mouse é movido apertado
|
||||
if arrastando >= 0:
|
||||
x, y, d = circulos[arrastando]
|
||||
x += mouseX - pmouseX
|
||||
y += mouseY - pmouseY
|
||||
circulos[arrastando] = (x, y, d)
|
||||
|
||||
def mouseWheel(event):
|
||||
movimento_roda = event.getCount()
|
||||
for i, circulo in enumerate(circulos):
|
||||
x, y, d = circulo
|
||||
dist_mouse_circulo = dist(mouseX, mouseY, x, y)
|
||||
raio = d / 2
|
||||
if dist_mouse_circulo < raio:
|
||||
d += movimento_roda
|
||||
# Limitar o tamanho possível dos círculos
|
||||
if 15 < d < 270:
|
||||
circulos[i] = (x, y, d)
|
||||
# sem `break` todos sob o mouse seriam afetados
|
||||
break # interrompe o laço `for`
|
||||
|
||||
def sorteia_circulos(num):
|
||||
circulos[:] = [] # esvazia a lista
|
||||
for _ in range(num): # vamos sortear `num` círculos
|
||||
d = 128
|
||||
x = random(d / 2, width - d / 2)
|
||||
y = random(d / 2, height - d / 2)
|
||||
circulos.append((x, y, d))
|
|
@ -18,6 +18,12 @@ You may also support my artistic work, open educational resources and research u
|
|||
|
||||
---
|
||||
|
||||

|
||||
|
||||
[sketch_2020_05_12a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_05_12a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
[sketch_2020_05_11a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_05_11a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
|
||||
|
|
Ładowanie…
Reference in New Issue