Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import controlP5.*;
- ControlP5 cp5;
- enum Paleta {
- paleta1,
- paleta2,
- paleta3
- }
- DropdownList colors;
- DropdownList divisoriasddl;
- int pressed = 0;
- int cores = 5;
- boolean divisorias = true;
- boolean isArt = false;
- //Paleta de cores
- int [] cores1;
- int [] cores2;
- int [] cores3;
- int corUs = 0;
- int [] usadas = {-1,-1,-1,-1};
- //Váriaveis globais que também podem ser passadas diretamente na função
- int tamanhoQuadrado = 300;
- int quantidadeDeCores = 3;
- boolean linhasDivisorias = true;
- PImage texture;
- void setup(){
- preencherCores();
- size(1200, 600);
- texture = loadImage("texture.png");
- //drawArt(quantidadeDeCores,Paleta.paleta3,linhasDivisorias);
- createGUI();
- }
- public void createGUI() {
- cp5 = new ControlP5(this);
- cp5.addSlider("cores")
- .setLabel("Quantidade de cores")
- .setColorCaptionLabel(color(0,0,0))
- .setPosition(40,40)
- .setSize(50,20)
- .setRange(2,3);
- cp5.addButton("Create")
- .setValue(0)
- .setPosition(40, 260)
- .setSize(200,20);
- colors = cp5.addDropdownList("Paleta")
- .setId(0)
- .setLabel("Escolha a Paleta")
- .setPosition(40,160)
- .setSize(200,200);
- customize(colors);
- divisoriasddl = cp5.addDropdownList("Divisorias")
- .setId(1)
- .setLabel("Divisorias?")
- .setPosition(40,90)
- .setSize(200,200);
- customize(divisoriasddl);
- }
- void customize(DropdownList ddl) {
- ddl.setBackgroundColor(color(190));
- ddl.setItemHeight(20);
- ddl.setBarHeight(15);
- switch(ddl.getId()){
- case 0:
- ddl.addItem("Paleta 1", 0);
- ddl.addItem("Paleta 2", 1);
- ddl.addItem("Paleta 3", 2);
- break;
- case 1:
- ddl.addItem("Sim", 0);
- ddl.addItem("Nao", 1);
- break;
- }
- ddl.setColorBackground(color(60));
- ddl.setColorActive(color(255, 128));
- }
- public void Create() {
- pressed ++;
- background(220);
- if(pressed >= 2) {
- isArt = true;
- cp5.setVisible(false);
- drawArt(cores, returnPalet(colors.getValue()), withDivisors(divisoriasddl.getValue()));
- }
- }
- void draw() {
- if(!isArt) {
- background(220);
- }
- }
- boolean withDivisors(float valueF) {
- int value = int(valueF);
- return value == 1 ? false : true;
- }
- Paleta returnPalet(float valueF) {
- int value = int(valueF);
- switch(value) {
- case 0:
- return Paleta.paleta1;
- case 1:
- return Paleta.paleta2;
- case 2:
- return Paleta.paleta3;
- default:
- return Paleta.paleta1;
- }
- }
- void drawArt(int quantidadeDeCores, Paleta paletaDeCor, boolean linhasDivisorias) {
- //Sorteia as cores da arte
- int corBackground = getNextColor();
- corUs ++;
- int corInterna = getNextColor();
- corUs ++;
- int corQuadrado = getNextColor();
- corUs++;
- println(corBackground + " " + corInterna + " " + corQuadrado);
- println(usadas);
- //Helper Variables
- int[] paleta = getPaleta(paletaDeCor);
- int [] coluna = {0,1,2,3};
- int[] linha = {0,1};
- //Cria os quadrados principais
- noStroke();
- fill(color(paleta[corBackground]));
- for (int l : linha) {
- for(int c : coluna) {
- rect(c*tamanhoQuadrado, l * tamanhoQuadrado, tamanhoQuadrado, tamanhoQuadrado);
- }
- }
- //Cria as linhas divisórias
- if(linhasDivisorias) {
- stroke(color(paleta[corQuadrado]));
- strokeWeight(2);
- line(0,tamanhoQuadrado, 1200, tamanhoQuadrado);
- for (int c : coluna) {
- if (c != 0) {
- if(c == 1) {
- line(c * tamanhoQuadrado - 2, 0, c * tamanhoQuadrado - 2, 600);
- }else {
- line(c * tamanhoQuadrado + 2, 0, c * tamanhoQuadrado + 2, 600);
- }
- }
- }
- }
- /**Forma os triângulos presente na obra,se tiver mais de 2 cores, os triângulos possuem
- cores diferentes **/
- noStroke();
- for (int l : linha) {
- for(int c : coluna) {
- if((c%2 == 0 && l % 2 == 0) || (c % 2 != 0 && l % 2 != 0)) {
- fill(color(paleta[corQuadrado]));
- triangle(c * tamanhoQuadrado + 12, l * tamanhoQuadrado + 68, c * tamanhoQuadrado + 68, (l + 1) * tamanhoQuadrado - 12, (c + 1) * tamanhoQuadrado - 12, (l+1) * tamanhoQuadrado - 68);
- if(quantidadeDeCores > 2) {
- fill(color(paleta[corInterna]));
- }
- triangle(c * tamanhoQuadrado + 12, l * tamanhoQuadrado + 68, (c + 1) * tamanhoQuadrado - 68, l * tamanhoQuadrado + 12, (c + 1) * tamanhoQuadrado - 12, (l+1) * tamanhoQuadrado - 68);
- }else {
- fill(color(paleta[corQuadrado]));
- triangle(c*tamanhoQuadrado + 68,(l + 1) * tamanhoQuadrado - 12,c * tamanhoQuadrado + 12,l * tamanhoQuadrado + 68,(c+1) * tamanhoQuadrado - 68, l*tamanhoQuadrado + 12);
- if(quantidadeDeCores > 2) {
- fill(color(paleta[corInterna]));
- }
- triangle(c*tamanhoQuadrado + 68,(l + 1) * tamanhoQuadrado - 12,(c + 1) * tamanhoQuadrado - 12,(l + 1) * tamanhoQuadrado - 68,(c+1) * tamanhoQuadrado - 68, l*tamanhoQuadrado + 12);
- }
- }
- //Carrega a textura do quadro
- tint(255, 30);
- image(texture,0,0);
- }
- }
- //Sorteia uma cor aleatória na paleta
- int getNextColor(){
- int random;
- do {
- random = floor(random(3));
- }while(contains(random));
- println("Random : " + random);
- usadas[corUs] = random;
- return random;
- }
- boolean contains(int num) {
- for (int i : usadas) {
- if(num == i){
- return true;
- }
- }
- return false;
- }
- //Função para retorna a paleta de cores escolhida
- int[] getPaleta(Paleta a){
- switch (a) {
- case paleta1:
- return cores1;
- case paleta2:
- return cores2;
- case paleta3:
- return cores3;
- }
- return new int[1];
- }
- //Cores das paletas, cada arrray representa um paleta
- void preencherCores() {
- cores1 = new int[3];
- cores2 = new int[3];
- cores3 = new int[3];
- cores1[0] = #7b252f;
- cores1[1] = #e25034;
- cores1[2] = #f0e7d2;
- cores2[0] = #3e3730;
- cores2[1] = #f2e1bf;
- cores2[2] = #51505b;
- cores3[0] = #360b05;
- cores3[1] = #d8e2d4;
- cores3[2] = #050801;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement