Bananaware

algoritmos trabalho 1 v1.1

May 7th, 2014
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // @autor Jorge Luiz dos Santos Ramos Junior
  2. // data de criação: versão básica sem animação 16/abr/2014, inclusão de setup() draw() classe Barco e animação em 25/abr/2014
  3. /* inspiração: Com quantos gigabytes
  4.                Se faz uma jangada
  5.                Um barco que veleje
  6.                Um barco que veleje
  7.                
  8.    o código é uma tentativa de visualização desse trecho */
  9.    
  10. // variável barco
  11. Barco b;
  12.  
  13. void setup()
  14. {
  15.   // definição da janela
  16.   size(800,600);
  17.  
  18.   // definições do barco
  19.   float x = 300; // posição inicial no eixo x
  20.   color c1 = color(40,8,8); // cor do barco
  21.   color c2 = color(248,248,248); // cor da bandeira e do texto
  22.   int l = 300; // largura
  23.   int a = 325; // altura
  24.   float v = 1.5; // velocidade em pixels
  25.  
  26.   b = new Barco(x, c1, c2, l, a, v);
  27. }
  28.  
  29. void draw()
  30. {
  31.   noStroke();
  32.   background(64,192,255);
  33.  
  34.   // água
  35.   fill(0,0,192);
  36.   rect(0,500,width,100);
  37.  
  38.   // sol
  39.   fill(255,192,0);
  40.   ellipse(700,100,100,100);
  41.  
  42.   b.move();
  43.   b.display();
  44. }
  45.  
  46.  
  47.  
  48. class Barco
  49. {
  50.   // redundante, mas melhor do que sem comentários!
  51.   float x; // posição no eixo x
  52.   color c1; // cor do barco
  53.   color c2; // cor da bandeira e do texto
  54.   int l; // largura
  55.   int a; // altura
  56.   float v; // velocidade em pixels
  57.  
  58.   Barco(float x, color c1, color c2, int l, int a, float v)
  59.   {
  60.     this.x = x;
  61.     this.c1 = c1;
  62.     this.c2 = c2;
  63.     this.l = l;
  64.     this.a = a;
  65.     this.v = v;
  66.   }
  67.  
  68.   // tamanhos em função de l, h escolhidos por algo de tentativa e erro :D
  69.   void display()
  70.   {
  71.     // cor para o corpo e a haste
  72.     fill(c1);
  73.    
  74.     // corpo
  75.     rect(x, 400, l, 100);
  76.     triangle(x-l/3, 400, x, 400, x, 500);
  77.     triangle(x+l, 400, x+l, 500, x+l+l/3, 400);
  78.    
  79.     // haste
  80.     rect(x+3*l/7, 400-a, l/7, a);
  81.    
  82.     // cor para o texto e a bandeira
  83.     fill(c2);
  84.    
  85.     // bandeira
  86.     triangle(x+4*l/7, 400-a, x+l, 400-a, x+4*l/7, 400-5*a/6);
  87.    
  88.     // texto
  89.     fill(c2);
  90.     textSize(32);
  91.     text("GB", x+l/30, 460);
  92.   }
  93.  
  94.   void move()
  95.   {
  96.     // v pixels por passo
  97.     x = x + v;
  98.    
  99.     // retorna para a esquerda ao alcançar a direita
  100.     // l/3 é a largura de um dos triângulos que compõem os lados
  101.     // portanto, o barco deve retornar apenas quando o triângulo passar da direita
  102.     // e retornar aparecendo com a ponta do triângulo da direita  
  103.     if (x > width+l/3)
  104.     {
  105.       x = 0-l-l/3; // l = largura do casco, l/3 largura do triângulo
  106.     }
  107.   }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment