2024年11月25日 星期一

Week12 想不到名字

 https://processing.org/reference/libraries

官網函式庫


week12_1(isplaying)

//week12_01_libraries_sound_isplaying

//https://processing.org/reference/libraries  ctrl+f  sound

//放入聲音mp3

import processing.sound.*;

SoundFile sound1,sound2;

int playing = 2;

void setup(){

  size(640,360);

  background(255,100,100);

  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_2(函數線)

//week12_02_bezier_sample
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);



week12_3(函數線移動)

//week12_03_bezier_1331_equation
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(250, 150, 150);
  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(函數線球生成)

//week12_04_bezier_fo_t
void setup() {
  size(500, 500);
}
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, 255, 100);
  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(CALSS)

//week12_05_bezier_class_ball
void setup() {
  size(500, 500);
}
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, 255, 100);
  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);
}
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(ball add remove)

//week12_06_Arraylist_add_remove
void setup() {
  size(500, 500);
}
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, 255, 100);
  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;
  }
}


沒有留言:

張貼留言