GMU:Immersive Strategien/Inhalte/Bälle/CodeD: Difference between revisions

From Medien Wiki
(Created page with " == Code D == Ball[] ball = new Ball[15]; int a,b,c; //Abstände der Ebenen Ball mausBall; void setup() { size(1280,1024); //size(1920,1200); smooth(); noStroke(); co...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Code D ==
== Code D ==


Ball[] ball = new Ball[15];
<source lang="Java">Ball[] ball = new Ball[15];
int a,b,c; //Abstände der Ebenen
int a,b,c; //Abstände der Ebenen
Ball mausBall;
Ball mausBall;
Line 240: Line 239:
     ball[i].maleBall();
     ball[i].maleBall();
   }
   }
    
   //Mausball stößt die Bälle
   for (int i=0; i < 15; i++) {
   for (int i=0; i < 15; i++) {
     if ((ball[i].position[1] >= mausBall.position[0]) && (ball[i].position[3] >= mausBall.position[2]) &&  
     if ((ball[i].position[1] >= mausBall.position[0]) && (ball[i].position[3] >= mausBall.position[2]) &&  
Line 268: Line 267:
   mausBall.h = (int)random(360);
   mausBall.h = (int)random(360);
}
}
 
</source>


== Objekt Ball ==
== Objekt Ball ==


class Ball {
<source lang="Java">class Ball {
    
    
   int g1,g2; //Größe
   int g1,g2; //Größe
Line 303: Line 302:
   }
   }
}
}
</source>

Latest revision as of 17:48, 27 March 2011

Code D

Ball[] ball = new Ball[15];
int a,b,c; //Abstände der Ebenen
Ball mausBall;

void setup() {
  size(1280,1024);
  //size(1920,1200);
  smooth();
  noStroke();
  colorMode(HSB,360,100,100,100);
  
  a = 500; //700 Größe der ersten Ebene
  b = 400; //600 Größe der zweiten Ebene
  c = 40; //60 Lücke
  
  for (int i=0; i < 5; i++) {
    ball[i] = new Ball();
    //in erster Ebene
    ball[i].x = random(ball[i].g1,a-ball[i].g1);
    ball[i].y = random(ball[i].g2,height-ball[i].g2);
  }
  
  for (int i=5; i < 10; i++) {
    ball[i] = new Ball();
    //in zweiter Ebene
    ball[i].x = random(a+c+ball[i].g1,a+c+b-ball[i].g1);
    ball[i].y = random(ball[i].g2,height-ball[i].g2);
  }
  
  for (int i=10; i < ball.length; i++) {
    ball[i] = new Ball();
    //in dritter Ebene
    ball[i].x = random(a+c+b+c+ball[i].g1,width-ball[i].g1);
    ball[i].y = random(ball[i].g2,height-ball[i].g2);
  }
  mausBall = new Ball();
}

void draw() {
  background(0);
  mausBall.x = mouseX;
  mausBall.y = mouseY;
  mausBall.maleBall();
  
  mausBall.position[0] = mausBall.x-mausBall.g1/2;
  mausBall.position[1] = mausBall.x+mausBall.g1/2;
  mausBall.position[2] = mausBall.y-mausBall.g2/2;
  mausBall.position[3] = mausBall.y+mausBall.g2/2;
  
  for (int i=0; i < 15; i++) {
    ball[i].position[0] = ball[i].x-ball[i].g1/2;
    ball[i].position[1] = ball[i].x+ball[i].g1/2;
    ball[i].position[2] = ball[i].y-ball[i].g2/2;
    ball[i].position[3] = ball[i].y+ball[i].g2/2;
  }
  
  for (int i=0; i < 5; i++) {
    //Bewegen
    if (ball[i].angle <= 360) {
      ball[i].angle -= 2;
    }
    if (ball[i].angle <= 0) {
      ball[i].angle = 360;
    }
    //im Bogen
    ball[i].vx = cos(radians(ball[i].angle))*ball[i].g1/6;
    ball[i].vy = sin(radians(ball[i].angle))*ball[i].g2/6;
    ball[i].x = ball[i].x + ball[i].vx;
    ball[i].y = ball[i].y + ball[i].vy;
    //Ballgröße zurücksetzen
    if (ball[i].g1 != 90) {
      ball[i].g1 = 90;
    }
    //Rand oben
    if (ball[i].x <= 0+ball[i].g1/2) {
      ball[i].angle = 60;
      ball[i].g1 = ball[i].g1-20;
    }
    //Rand unten
    if (ball[i].x >= a-ball[i].g1/2) {
      ball[i].angle = 180;
      ball[i].g1 = ball[i].g1-20;
    }
    //links raus
    if (ball[i].y <= 0-ball[i].g2) {
      ball[i].y = height+ball[i].g2/2;
    }
    //rechts raus
    if (ball[i].y >= height+ball[i].g2) {
      ball[i].y = 0-ball[i].g2/2;
    }   
    //Bälle stoßen aneinander
    for (int j=i+1; j < 5; j++) {
      if ((ball[i].position[1] >= ball[j].position[0]) && (ball[i].position[3] >= ball[j].position[2]) && 
      (ball[i].position[1] <= ball[j].position[1]) && (ball[i].position[3] <= ball[j].position[3])) {
        ball[i].angle = 135;
        ball[j].angle = 45;
      }
      if ((ball[i].position[0] <= ball[j].position[1]) && (ball[i].position[3] >= ball[j].position[2]) && 
      (ball[i].position[0] >= ball[j].position[0]) && (ball[i].position[3] <= ball[j].position[3])) {
        ball[i].angle = 45;
        ball[j].angle = 135;
      }
      if ((ball[i].position[1] >= ball[j].position[0]) && (ball[i].position[2] <= ball[j].position[3]) && 
      (ball[i].position[1] <= ball[j].position[1]) && (ball[i].position[2] >= ball[j].position[2])) {
        ball[i].angle = 135;
        ball[j].angle = 45;
      }
      if ((ball[i].position[0] <= ball[j].position[1]) && (ball[i].position[2] <= ball[j].position[3]) && 
      (ball[i].position[0] >= ball[j].position[0]) && (ball[i].position[2] >= ball[j].position[2])) {
        ball[i].angle = 45;
        ball[j].angle = 135;
      }
    }
    ball[i].maleBall();
  }
  
  for (int i=5; i < 10; i++) {
    //Bewegen
    if (ball[i].angle <= 360) {
      ball[i].angle -= 3;
    }
    if (ball[i].angle <= 0) {
      ball[i].angle = 360;
    }
    //im Bogen
    ball[i].vx = cos(radians(ball[i].angle))*ball[i].g1/6;
    ball[i].vy = sin(radians(ball[i].angle))*ball[i].g2/6;
    ball[i].x = ball[i].x + ball[i].vx;
    ball[i].y = ball[i].y + ball[i].vy;
    //Ballgröße zurücksetzen
    if (ball[i].g1 != 90) {
      ball[i].g1 = 90;
    }
    //Rand oben
    if (ball[i].x <= a+c+ball[i].g1/2) {
      ball[i].angle = 60;
      ball[i].g1 = ball[i].g1-20;
    }
    //Rand unten
    if (ball[i].x >= a+c+b-ball[i].g1/2) {
      ball[i].angle = 180;
      ball[i].g1 = ball[i].g1-20;
    }
    //links raus
    if (ball[i].y <= 0-ball[i].g2) {
      ball[i].y = height+ball[i].g2/2;
    }
    //rechts raus
    if (ball[i].y >= height+ball[i].g2) {
      ball[i].y = 0-ball[i].g2/2;
    }    
    //Bälle stoßen aneinander
    for (int j=i+1; j < 10; j++) {
      if ((ball[i].position[1] >= ball[j].position[0]) && (ball[i].position[3] >= ball[j].position[2]) && 
      (ball[i].position[1] <= ball[j].position[1]) && (ball[i].position[3] <= ball[j].position[3])) {
        ball[i].angle = 135;
        ball[j].angle = 45;
      }
      if ((ball[i].position[0] <= ball[j].position[1]) && (ball[i].position[3] >= ball[j].position[2]) && 
      (ball[i].position[0] >= ball[j].position[0]) && (ball[i].position[3] <= ball[j].position[3])) {
        ball[i].angle = 45;
        ball[j].angle = 135;
      }
      if ((ball[i].position[1] >= ball[j].position[0]) && (ball[i].position[2] <= ball[j].position[3]) && 
      (ball[i].position[1] <= ball[j].position[1]) && (ball[i].position[2] >= ball[j].position[2])) {
        ball[i].angle = 135;
        ball[j].angle = 45;
      }
      if ((ball[i].position[0] <= ball[j].position[1]) && (ball[i].position[2] <= ball[j].position[3]) && 
      (ball[i].position[0] >= ball[j].position[0]) && (ball[i].position[2] >= ball[j].position[2])) {
        ball[i].angle = 45;
        ball[j].angle = 135;
      }
    }
    ball[i].maleBall();
  }
  
  for (int i=10; i < 15; i++) {
    //Bewegen
    if (ball[i].angle <= 360) {
      ball[i].angle -= 4;
    }
    if (ball[i].angle <= 0) {
      ball[i].angle = 360;
    }
    //im Bogen
    ball[i].vx = cos(radians(ball[i].angle))*ball[i].g1/6;
    ball[i].vy = sin(radians(ball[i].angle))*ball[i].g2/6;
    ball[i].x = ball[i].x + ball[i].vx;
    ball[i].y = ball[i].y + ball[i].vy;
    //Ballgröße zurücksetzen
    if (ball[i].g1 != 90) {
      ball[i].g1 = 90;
    }
     //Rand oben
    if (ball[i].x <= a+c+b+c+ball[i].g1/2) {
      ball[i].angle = 60;
      ball[i].g1 = ball[i].g1-20;
    }
    //Rand unten
    if (ball[i].x >= width-ball[i].g1/2) {
      ball[i].angle = 180;
      ball[i].g1 = ball[i].g1-20;
    }
    //links raus
    if (ball[i].y <= 0-ball[i].g2) {
      ball[i].y = height+ball[i].g2/2;
    }
    //rechts raus
    if (ball[i].y >= height+ball[i].g2) {
      ball[i].y = 0-ball[i].g2/2;
    }    
    //Bälle stoßen aneinander
    for (int j=i+1; j < 15; j++) {
      if ((ball[i].position[1] >= ball[j].position[0]) && (ball[i].position[3] >= ball[j].position[2]) && 
      (ball[i].position[1] <= ball[j].position[1]) && (ball[i].position[3] <= ball[j].position[3])) {
        ball[i].angle = 135;
        ball[j].angle = 45;
      }
      if ((ball[i].position[0] <= ball[j].position[1]) && (ball[i].position[3] >= ball[j].position[2]) && 
      (ball[i].position[0] >= ball[j].position[0]) && (ball[i].position[3] <= ball[j].position[3])) {
        ball[i].angle = 45;
        ball[j].angle = 135;
      }
      if ((ball[i].position[1] >= ball[j].position[0]) && (ball[i].position[2] <= ball[j].position[3]) && 
      (ball[i].position[1] <= ball[j].position[1]) && (ball[i].position[2] >= ball[j].position[2])) {
        ball[i].angle = 135;
        ball[j].angle = 45;
      }
      if ((ball[i].position[0] <= ball[j].position[1]) && (ball[i].position[2] <= ball[j].position[3]) && 
      (ball[i].position[0] >= ball[j].position[0]) && (ball[i].position[2] >= ball[j].position[2])) {
        ball[i].angle = 45;
        ball[j].angle = 135;
      }
    }
    ball[i].maleBall();
  }
  //Mausball stößt die Bälle
  for (int i=0; i < 15; i++) {
    if ((ball[i].position[1] >= mausBall.position[0]) && (ball[i].position[3] >= mausBall.position[2]) && 
    (ball[i].position[1] <= mausBall.position[1]) && (ball[i].position[3] <= mausBall.position[3])) {
      ball[i].angle = 225;
    }
    if ((ball[i].position[0] <= mausBall.position[1]) && (ball[i].position[3] >= mausBall.position[2]) && 
    (ball[i].position[0] >= mausBall.position[0]) && (ball[i].position[3] <= mausBall.position[3])) {
      ball[i].angle = 315;
    }
    if ((ball[i].position[1] >= mausBall.position[0]) && (ball[i].position[2] <= mausBall.position[3]) && 
    (ball[i].position[1] <= mausBall.position[1]) && (ball[i].position[2] >= mausBall.position[2])) {
      ball[i].angle = 135;
    }
    if ((ball[i].position[0] <= mausBall.position[1]) && (ball[i].position[2] <= mausBall.position[3]) && 
    (ball[i].position[0] >= mausBall.position[0]) && (ball[i].position[2] >= mausBall.position[2])) {
      ball[i].angle = 45;
    }
  }
  
  fill(255);
  rect(a,0,c,height);
  rect(a+c+b,0,c,height);
}

void mousePressed() {
  mausBall.h = (int)random(360);
}

Objekt Ball

class Ball {
  
  int g1,g2; //Größe
  float x,y; //Position
  
  int h,s,b,a; //Farbe
  
  float vx,vy; //Geschwindigkeit
  float angle; //Gradzahl
  
  float[] position = new float[4]; // die 4 Ecken des Balls;
  
  Ball() {
    g1 = 90;
    g2 = g1;
    
    h = (int)random(360);
    s = 100;
    b = 100-g1; 
    a = 100;
    
    angle = 90;
  }
  
  void maleBall() {
    for (int i=0; i<g1; i+=5) { //Abrundungen bzw. Schatten
       fill(h,s,b+i,a);
       ellipse(x,y,g1-i,g2-i);
    }
  }
}