waterfall 연습

Processing 2007/02/27 15:53

import processing.opengl.*;
float ballX[] = new float[500];
float ballY[] = new float[500];
float speedX[] = new float[500];
float speedY[] = new float[500];
float gravity[]= new float[500];
float a[]=new float[500];
void setup(){
  size(300,300,OPENGL);
  background(255,255,255);
  for(int i=0; i<500; i++){
    ballX[i] = 150;
    ballY[i]=-50;
    speedX[i]=random(4)-2;
    speedY[i]=random(1);
    gravity[i]=random(0.2)+0.1;
    a[i]=random(100)+100;
  }
}
void draw(){
  background(255,255,255);
 for (int i=0;i<500;i++){
  speedY[i]=speedY[i]+gravity[i];
  ballX[i]=ballX[i]+speedX[i];
  ballY[i]=ballY[i]+speedY[i];
//벽에 부딪히면
//  if(ballX[i]>width){
//    speedX[i]=speedX[i]*-0.9;
//    ballX[i]=width;
//  }
//  else if(ballX[i]<0){
//    speedX[i]=speedX[i]*-0.9;
//    ballX[i]=0;
//  }
//바닥에 닿으면
  if(ballY[i]>height){
    speedY[i]=speedY[i]*-0.2;
    ballY[i]=height;
  }
//튀김이 작으면
  if(abs(speedY[i])<0.05){
    ballX[i] = 150;
    ballY[i]=-50;
    speedX[i]=random(2)-1;
    speedY[i]=random(1);
    gravity[i]=random(0.2)+0.1;
    a[i]=random(100)+100;
  }
//마우스
  stroke(255);
  fill(255,0,0);
  ellipse(mouseX,mouseY,10,10);
//팅기기
    if (abs(mouseX-ballX[i])<10 && abs(mouseY-ballY[i])<10) {
      speedY[i] = speedY[i] * -0.1;
      speedX[i] = speedX[i] * 0.5;
      ballX[i] = ballX[i] + speedX[i]*25;
      ballY[i] = ballY[i] + speedY[i]*10;
 }

 
  stroke(0,0,0,0);
  fill(10,50,a[i],50);
  ellipse(ballX[i],ballY[i],5,5);
}
}