2024年11月25日 星期一

week12.0313

 //week12_1_libraries_sound_SoundFile_sound_isPlaying

import processing.sound.*;

SoundFile sound1, sound2;

int playing = 2;

void setup(){

  size(640,360);

  background(255);

  sound1 = new SoundFile(this, "Intro Song_Final.mp3");

  sound2 = new SoundFile(this, "In Game Music.mp3");

}

void draw(){

  if(sound1.isPlaying()){

    playing=1;

  }else if(sound2.isPlaying()){

    playing=2;

  }else{

    if(playing==1) sound2.play();

    else sound1.play();

  }

}







//week12_3_bezier_1_3_3_1_eqation_mouseDragged_change_t

void setup(){

  size(500,500);

}

PVector p0 = new PVector(340,80);

PVector p1 = new PVector(40,40);

PVector p2 = new PVector(360,360);

PVector p3 = new PVector(60,320);

float t = 0.0;

void draw(){

  background(255);

  noFill();

  stroke(255,102,0);

  line(340,80,40,40);

  line(360,360,60,320);

  stroke(0,0,0);

  bezier(340,80,40,40,360,360,60,320);

  float x = p0.x*(1-t)*(1-t)*(1-t) + 3*p1.x*t*(1-t)*(1-t) + 3*p2.x*t*t*(1-t) + p3.x*t*t*t;

  float y = p0.y*(1-t)*(1-t)*(1-t) + 3*p1.y*t*(1-t)*(1-t) + 3*p2.y*t*t*(1-t) + p3.y*t*t*t;

  ellipse(x, y, 10, 10);

}

void mouseDragged(){

 t += 0.01*(mouseX-pmouseX); 

}





















//week12_4_bezier_for_t_t0_0_many_t
void setup(){
  size(400,400);
}
PVector p0 = new PVector(120,80);
PVector p1 = new PVector(320,20);
PVector p2 = new PVector(320,300);
PVector p3 = new PVector(120,300);
float t0 = 0.0;
void draw(){
  background(255);
  noFill();
  stroke(255,102,0);
  line(120,80,320,20);
  line(320,300,120,300);
  stroke(0,0,0);
  bezier(120,80,320,20,320,300,120,300);
  for(float t = t0; t>=0; t-=0.025){
    float x = p0.x*(1-t)*(1-t)*(1-t) + 3*p1.x*t*(1-t)*(1-t) + 3*p2.x*t*t*(1-t) + p3.x*t*t*t;
    float y = p0.y*(1-t)*(1-t)*(1-t) + 3*p1.y*t*(1-t)*(1-t) + 3*p2.y*t*t*(1-t) + p3.y*t*t*t;
    ellipse(x, y, 10, 10);
  }
}
void mouseDragged(){
 t0 += 0.01*(mouseX-pmouseX); 
}




















//week12_5_bezier_ArrayList_class_Ball_draw_ArrayList_add
void setup(){
  size(400,400);
}
PVector p0 = new PVector(120,80);
PVector p1 = new PVector(320,20);
PVector p2 = new PVector(320,300);
PVector p3 = new PVector(120,300);
float t0 = 0.0;
ArrayList<Ball> balls = new ArrayList<Ball>();
void draw(){
  background(255);
  noFill();
  stroke(255,102,0);
  line(120,80,320,20);
  line(320,300,120,300);
  stroke(0,0,0);
  bezier(120,80,320,20,320,300,120,300);
  for(Ball ball : balls){
    ball.draw();
  }
  if(frameCount%20==0) balls.add(new Ball(p0,p1,p2,p3));
}
void mouseDragged(){
 t0 += 0.01*(mouseX-pmouseX); 
}
class Ball{
  PVector p0,p1,p2,p3;
  float t = 0.0;
  Ball(PVector _p0, PVector _p1, PVector _p2, PVector _p3){
    p0 = _p0;
    p1 = _p1;
    p2 = _p2;
    p3 = _p3;
  }
  void draw(){
    float x = p0.x*(1-t)*(1-t)*(1-t) + 3*p1.x*t*(1-t)*(1-t) + 3*p2.x*t*t*(1-t) + p3.x*t*t*t;
    float y = p0.y*(1-t)*(1-t)*(1-t) + 3*p1.y*t*(1-t)*(1-t) + 3*p2.y*t*t*(1-t) + p3.y*t*t*t; 
    ellipse(x, y, 10, 10);
    t += 0.001;
  }
}



















//week12_6_bezier_ArrayList_balls_size_get_remove
void setup(){
  size(400,400);
}
PVector p0 = new PVector(120,80);
PVector p1 = new PVector(320,20);
PVector p2 = new PVector(320,300);
PVector p3 = new PVector(120,300);
float t0 = 0.0;
ArrayList<Ball> balls = new ArrayList<Ball>();
void draw(){
  background(255);
  noFill();
  stroke(255,102,0);
  line(120,80,320,20);
  line(320,300,120,300);
  stroke(0,0,0);
  bezier(120,80,320,20,320,300,120,300);
  for(Ball ball : balls){
    ball.draw();
  }
  if(frameCount%20==0){
    balls.add(new Ball(p0,p1,p2,p3));
    println(balls.size());
  }
  if(balls.size()>0 && balls.get(0).t>1.0) balls.remove(0);
}
void mouseDragged(){
 t0 += 0.01*(mouseX-pmouseX); 
}
class Ball{
  PVector p0,p1,p2,p3;
  float t = 0.0;
  Ball(PVector _p0, PVector _p1, PVector _p2, PVector _p3){
    p0 = _p0;
    p1 = _p1;
    p2 = _p2;
    p3 = _p3;
  }
  void draw(){
    float x = p0.x*(1-t)*(1-t)*(1-t) + 3*p1.x*t*(1-t)*(1-t) + 3*p2.x*t*t*(1-t) + p3.x*t*t*t;
    float y = p0.y*(1-t)*(1-t)*(1-t) + 3*p1.y*t*(1-t)*(1-t) + 3*p2.y*t*t*(1-t) + p3.y*t*t*t; 
    ellipse(x, y, 10, 10);
    t += 0.001;
  }
}



















沒有留言:

張貼留言