Last active
May 5, 2017 16:30
-
-
Save villares/f274204ad6a9054576a6901ab8226005 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Exemplo de uso da Classe Bandeirinhas, com mudança de cor 'mouse over' | |
clique para acrescentar um objeto, tecle 'espaço' para remover | |
""" | |
bandeirinhas = [] # lista de objetos | |
def setup(): | |
""" Define área de desenho e popula lista de bandeirinhas """ | |
global bandeira_0 | |
global baindeira_1, bandeira_2 | |
size(100, 100) # área de desenho (width, height) | |
meia_largura, meia_altura = width / 2, height / 2 | |
bandeira_0 = Bandeirinha(meia_largura, meia_altura) | |
bandeira_1 = Bandeirinha(80, 10, 30) | |
bandeira_2 = Bandeirinha(10, 40, 20) | |
for _ in range(50): | |
nova_bandeirinha = Bandeirinha(meia_largura, meia_altura) | |
bandeirinhas.append(nova_bandeirinha) | |
def draw(): | |
""" Limpa a tela, desenha e atualiza bandeirinhas """ | |
background(0) # atualização do desenho, fundo preto | |
bandeira_0.desenha() | |
bandeira_0.anda() | |
bandeira_1.desenha() | |
bandeira_1.anda() | |
bandeira_2.desenha() | |
bandeira_2.anda() | |
for bandeira in bandeirinhas: | |
bandeira.desenha() | |
bandeira.anda() | |
def mousePressed(): | |
""" Acrescenta pequena bandeirinha branca """ | |
nova_bandeirinha = Bandeirinha(mouseX, mouseY, 25) | |
nova_bandeirinha.cor = color(255) # forçando que seja branca! | |
bandeirinhas.append(nova_bandeirinha) | |
def keyPressed(): | |
""" tecla 'espaço' remove a última bandeirinha da lista """ | |
if key == ' ' and len(bandeirinhas) > 1: | |
removida = bandeirinhas.pop() | |
class Bandeirinha(): | |
""" Classe Bandeirinha, cor sorteada, tamanho sorteado por default """ | |
def __init__(self, px, py, ptamanho=50): | |
self.tamanho = ptamanho | |
def __init__(self, px, py, ptamanho=None): | |
self.x = px | |
self.y = py | |
if ptamanho: | |
self.tamanho = ptamanho | |
else: | |
self.tamanho = random(50, 200) | |
self.vx = random(-1,1) | |
self.vy = random(-1,1) | |
self.cor = color(random(255), # R | |
random(255), # G | |
random(255), # B | |
200) # alpha | |
def desenha(self): | |
""" Desenha polígono em torno das coordenadas do objeto """ | |
metade = self.tamanho / 2 | |
with pushMatrix(): # preseservando o sistema de coordenadas anterior | |
translate(self.x, self.y) # translada o sistema de coordenadas | |
noStroke() # sem contorno | |
# se o mouse estiver longe, normal, senão, branca | |
if dist(mouseX, mouseY, self.x, self.y) > metade: | |
fill(self.cor) | |
else: | |
fill(255,100) | |
beginShape() # inicia polígono | |
vertex(-metade, -metade) | |
vertex(-metade, metade) | |
vertex(0, 0) | |
vertex(metade, metade) | |
vertex(metade, -metade) | |
endShape(CLOSE) # encerra polígono, fechando no primeiro vértice | |
def anda(self): | |
""" atualiza a posição do objeto """ | |
self.x += 1 | |
self.y += 1 | |
if self.x > width + 25: | |
self.x = -25 | |
if self.y > height + 25: | |
self.y = -25 | |
""" atualiza a posição do objeto e devolve do lado oposto se sair """ | |
self.x += self.vx | |
self.y += self.vy | |
metade = self.tamanho / 2 | |
if self.x > width + metade: | |
self.x = -metade | |
if self.y > height + metade: | |
self.y = -metade | |
if self.x < -metade: | |
self.x = width + metade | |
if self.y < -metade: | |
self.y = height + metade |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment