Advertisement
bethdps

Trabalho Parte II

Dec 6th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.07 KB | None | 0 0
  1. import controlP5.*;
  2.  
  3. ControlP5 cp5;
  4.  
  5. enum Paleta {
  6.   paleta1,
  7.   paleta2,
  8.   paleta3
  9. }
  10.  
  11. DropdownList colors;
  12. DropdownList divisoriasddl;
  13. int pressed = 0;
  14. int cores = 5;
  15. boolean divisorias = true;
  16. boolean isArt = false;
  17.  
  18. //Paleta de cores
  19. int [] cores1;
  20. int [] cores2;
  21. int [] cores3;
  22. int corUs = 0;
  23. int [] usadas = {-1,-1,-1,-1};
  24.  
  25. //Váriaveis globais que também podem ser passadas diretamente na função
  26. int tamanhoQuadrado = 300;
  27. int quantidadeDeCores = 3;
  28. boolean linhasDivisorias = true;
  29.  
  30. PImage texture;
  31.  
  32. void setup(){
  33.   preencherCores();
  34.   size(1200, 600);
  35.   texture = loadImage("texture.png");
  36.   //drawArt(quantidadeDeCores,Paleta.paleta3,linhasDivisorias);
  37.   createGUI();
  38. }
  39.  
  40.  
  41. public void createGUI() {
  42.   cp5 = new ControlP5(this);
  43.  
  44.   cp5.addSlider("cores")
  45.   .setLabel("Quantidade de cores")
  46.   .setColorCaptionLabel(color(0,0,0))
  47.   .setPosition(40,40)
  48.   .setSize(50,20)
  49.   .setRange(2,3);
  50.      
  51.   cp5.addButton("Create")
  52.      .setValue(0)
  53.      .setPosition(40, 260)
  54.      .setSize(200,20);
  55.      
  56.      colors = cp5.addDropdownList("Paleta")
  57.               .setId(0)
  58.               .setLabel("Escolha a Paleta")
  59.               .setPosition(40,160)
  60.               .setSize(200,200);
  61.     customize(colors);
  62.    
  63.     divisoriasddl = cp5.addDropdownList("Divisorias")
  64.               .setId(1)
  65.               .setLabel("Divisorias?")
  66.               .setPosition(40,90)
  67.               .setSize(200,200);
  68.     customize(divisoriasddl);
  69. }
  70.  
  71. void customize(DropdownList ddl) {
  72.   ddl.setBackgroundColor(color(190));
  73.   ddl.setItemHeight(20);
  74.   ddl.setBarHeight(15);
  75.  
  76.   switch(ddl.getId()){
  77.     case 0:
  78.       ddl.addItem("Paleta 1", 0);
  79.       ddl.addItem("Paleta 2", 1);
  80.       ddl.addItem("Paleta 3", 2);
  81.       break;
  82.     case 1:
  83.       ddl.addItem("Sim", 0);
  84.       ddl.addItem("Nao", 1);
  85.       break;
  86.   }
  87.  
  88.   ddl.setColorBackground(color(60));
  89.   ddl.setColorActive(color(255, 128));
  90. }
  91.  
  92. public void Create() {
  93.   pressed ++;
  94.   background(220);
  95.   if(pressed >= 2) {
  96.     isArt = true;
  97.     cp5.setVisible(false);
  98.     drawArt(cores, returnPalet(colors.getValue()), withDivisors(divisoriasddl.getValue()));
  99.   }
  100. }
  101.  
  102. void draw() {
  103.   if(!isArt) {
  104.     background(220);
  105.   }
  106. }
  107.  
  108. boolean withDivisors(float valueF) {
  109.   int value = int(valueF);
  110.   return value == 1 ? false : true;
  111. }
  112.  
  113. Paleta returnPalet(float valueF) {
  114.   int value = int(valueF);
  115.   switch(value) {
  116.     case 0:
  117.       return Paleta.paleta1;
  118.     case 1:
  119.       return Paleta.paleta2;
  120.     case 2:
  121.       return Paleta.paleta3;
  122.     default:
  123.       return Paleta.paleta1;
  124.   }
  125. }
  126.  
  127. void drawArt(int quantidadeDeCores, Paleta paletaDeCor, boolean linhasDivisorias) {
  128.   //Sorteia as cores da arte
  129.   int corBackground = getNextColor();
  130.   corUs ++;
  131.   int corInterna = getNextColor();
  132.   corUs ++;
  133.   int corQuadrado = getNextColor();
  134.   corUs++;
  135.  
  136.   println(corBackground + " " + corInterna + " " + corQuadrado);
  137.   println(usadas);
  138.  
  139.   //Helper Variables
  140.   int[] paleta = getPaleta(paletaDeCor);
  141.   int []  coluna = {0,1,2,3};
  142.   int[] linha = {0,1};
  143.  
  144.   //Cria os quadrados principais
  145.   noStroke();
  146.   fill(color(paleta[corBackground]));
  147.   for (int l : linha) {
  148.     for(int c : coluna) {
  149.       rect(c*tamanhoQuadrado, l * tamanhoQuadrado, tamanhoQuadrado, tamanhoQuadrado);  
  150.     }  
  151.   }
  152.   //Cria as linhas divisórias
  153.   if(linhasDivisorias) {
  154.     stroke(color(paleta[corQuadrado]));
  155.     strokeWeight(2);
  156.     line(0,tamanhoQuadrado, 1200, tamanhoQuadrado);
  157.     for (int c : coluna) {
  158.       if (c != 0) {
  159.         if(c == 1) {
  160.           line(c * tamanhoQuadrado - 2, 0, c * tamanhoQuadrado - 2, 600);
  161.         }else {
  162.           line(c * tamanhoQuadrado + 2, 0, c * tamanhoQuadrado + 2, 600);
  163.         }
  164.       }
  165.     }
  166.   }
  167.   /**Forma os triângulos presente na obra,se tiver mais de 2 cores, os triângulos possuem
  168.   cores diferentes **/
  169.   noStroke();  
  170.   for (int l : linha) {
  171.     for(int c : coluna) {
  172.       if((c%2 == 0 && l % 2 == 0) || (c % 2 != 0 && l % 2 != 0)) {
  173.         fill(color(paleta[corQuadrado]));
  174.         triangle(c * tamanhoQuadrado + 12, l * tamanhoQuadrado + 68, c * tamanhoQuadrado + 68, (l + 1) * tamanhoQuadrado - 12, (c + 1) * tamanhoQuadrado - 12, (l+1) * tamanhoQuadrado - 68);
  175.        
  176.         if(quantidadeDeCores > 2) {
  177.           fill(color(paleta[corInterna]));
  178.         }
  179.         triangle(c * tamanhoQuadrado + 12, l * tamanhoQuadrado + 68, (c + 1) * tamanhoQuadrado - 68, l * tamanhoQuadrado + 12, (c + 1) * tamanhoQuadrado - 12, (l+1) * tamanhoQuadrado - 68);
  180.       }else {
  181.         fill(color(paleta[corQuadrado]));
  182.         triangle(c*tamanhoQuadrado + 68,(l + 1) * tamanhoQuadrado - 12,c * tamanhoQuadrado + 12,l * tamanhoQuadrado + 68,(c+1) * tamanhoQuadrado - 68, l*tamanhoQuadrado + 12);
  183.        
  184.         if(quantidadeDeCores > 2) {
  185.           fill(color(paleta[corInterna]));
  186.         }
  187.         triangle(c*tamanhoQuadrado + 68,(l + 1) * tamanhoQuadrado - 12,(c + 1) * tamanhoQuadrado - 12,(l + 1) * tamanhoQuadrado - 68,(c+1) * tamanhoQuadrado - 68, l*tamanhoQuadrado + 12);
  188.       }
  189.     }
  190.     //Carrega a textura do quadro
  191.     tint(255, 30);
  192.     image(texture,0,0);
  193.   }
  194. }
  195.  
  196. //Sorteia uma cor aleatória na paleta
  197. int getNextColor(){
  198.   int random;
  199.   do {
  200.     random = floor(random(3));
  201.   }while(contains(random));
  202.   println("Random : " + random);
  203.   usadas[corUs] = random;
  204.   return random;
  205. }
  206.  
  207. boolean contains(int num) {
  208.   for (int i : usadas) {
  209.     if(num == i){
  210.       return true;
  211.     }
  212.   }
  213.   return false;
  214. }
  215.  
  216. //Função para retorna a paleta de cores escolhida
  217. int[] getPaleta(Paleta a){
  218.   switch (a) {
  219.     case paleta1:
  220.       return cores1;
  221.      case paleta2:
  222.        return cores2;
  223.      case paleta3:
  224.        return cores3;
  225.   }
  226.   return new int[1];
  227. }
  228.  
  229. //Cores das paletas, cada arrray representa um paleta
  230. void preencherCores() {
  231.   cores1 = new int[3];
  232.   cores2 = new int[3];
  233.   cores3 = new int[3];
  234.  
  235.   cores1[0] = #7b252f;
  236.   cores1[1] = #e25034;
  237.   cores1[2] = #f0e7d2;
  238.  
  239.   cores2[0] = #3e3730;
  240.   cores2[1] = #f2e1bf;
  241.   cores2[2] = #51505b;
  242.  
  243.   cores3[0] = #360b05;
  244.   cores3[1] = #d8e2d4;
  245.   cores3[2] = #050801;
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement