// algoritmo para controle das cores do semaforo de fluxo // de carros e de pedestres int i =0; int i2 =0; boolean inv; void setup(){ background(255); size(400,200); smooth(); } void draw(){ semaforoCarro(); semaforoPedestre(); if (inv){ mudaCor(); mudaCor2(); } } void semaforoCarro(){ // desenha semaforo do carro rectMode(CENTER); fill(200); rect(100,100,50,150); fill(100,0,0); ellipse(100,60,30,30); fill(100,100,0); ellipse(100,100,30,30); fill(0,255,0); ellipse(100,140,30,30); } void semaforoPedestre(){ // desenha semaforo do pedestre rectMode(CENTER); fill(200); rect(300,100,50,100); rect(300,175,10,10); fill(255,0,0); ellipse(300,80,30,30); fill(0,100,0); ellipse(300,120,30,30); } void mudaCor(){ // muda cor do semaforo do carro fill(0,255,0); ellipse(100,140,30,30); int tempo = millis()-i; if(tempo > 2000){ fill(255,255,0); ellipse(100,100,30,30); fill(0,100,0); ellipse(100,140,30,30); } if(tempo > 4000){ fill(100,100,0); ellipse(100,100,30,30); fill(255,0,0); ellipse(100,60,30,30); } if(tempo > 6000){ i = millis(); } } void mudaCor2(){ // muda cor do semanforo do pedestre fill(255,0,0); ellipse(300,80,30,30); int tempo = millis()-i2; if(tempo > 4000){ fill(0,255,0); ellipse(300,120,30,30); fill(100,0,0); ellipse(300,80,30,30); } if(tempo > 6000){ i2 = millis(); } } void mousePressed(){ // verifica se o mouse foi pressionado if(mousePressed & mouseX > 295 & mouseX < 305 & mouseY > 170 & mouseY < 180){ i = 0; i2 = 0; inv = !inv; } }