2024年11月25日 星期一

week12名字取長一點比較好認

 1.week12_01_libraries_sound_SoundFile_sound_isPlaying

// week12_01_libraries_sound_SoundFile_sound_isPlaying
// 官網-Documentation文件-Libraries函式庫(圖書館)-Sound聲音部分
//http://processing.org/reference/libraries/sound/index.html
//我們教過 play() stop() pause(), 今天想要試 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"); //week09_04可下載
  sound2 = new SoundFile(this, "In Game Music.mp3"); //week09_04可下載
}
void draw(){
  if(sound1.isPlaying()){ //音樂1有沒有在撥放
    playing=1;
  }else if(sound2.isPlaying()){ // 音樂2有沒有在撥放
    playing=2;
  }else{ //沒有任何音樂在撥放
    if(playing==1) sound2.play(); // 換另外一首
    else sound1.play();
  }
}


2.week12_02_bezier_sample
//week12_02_bezier_sample
// 按右鍵, 找bezier()函示的網站文件
//https
size(500,500);
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);
3.week12_03_bezier_1_3_3_1_equation_mouseDragged_change_t
// week12_03_bezier_1_3_3_1_equation_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(); //以下,是從文件夾copy來的
  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);
}

4.week12_04_bezier_for_t_t0_0_many_t
// week12_04_bezier_for_t_t0_0_many_t
//http://processing.org/reference/bezier_.html 下面的範例
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(340, 80, 40, 40);
  line(360, 360, 60, 320);
  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);
}

5.week12_05_bezier_ArrayList_class_Ball_draw_ArrayList_add
// week12_05_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;
void draw(){
  background(255);
  noFill();
  stroke(255, 102, 0);
  line(340, 80, 40, 40);
  line(360, 360, 60, 320);
  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);
}
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;
  }
  
}

6.week12_06_bezier_ArrayList_class_Ball_draw_ArrayList_add
// week12_06_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(340, 80, 40, 40);
  line(360, 360, 60, 320);
  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;
  }
  
}

7.week12_07_bezier_ArrayList_balls_size_get_remove
// week12_07_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(340, 80, 40, 40);
  line(360, 360, 60, 320);
  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;
  }
  
}













































































































沒有留言:

張貼留言