2024年11月25日 星期一

SY-BlingBangBang week12 點播

 [TODO]

上課內容:

音樂

// week12_1_libraries_sound_SoundFile_sound_isPlaying
// 官網-Documentation文件-Libraries函式庫(圖書館)-Sound聲音部分
// https://processing.org/reference/libraries/sound/index.html
// 我們教過 play() stop() pause(),今天要試isPlaying()是不是在播放
import processing.sound.*;
SoundFile sound1, sound2; //兩段音樂
int playing = 1;
void setup(){
  size(640,360);
  background(255);
  sound1 = new SoundFile(this, "Intro Song_Final.mp3"); //week09_4 可下載
  sound2 = new SoundFile(this, "In Game Music.mp3"); //week09_4 可下載
}
void draw(){
  if(sound1.isPlaying()){//音樂1有沒有在播放
    playing=1;
  }
  else if(sound2.isPlaying()){//音樂2有沒有在播放
    playing=2;
  }
  else{//沒有任何音樂在播放
    if(playing==1) sound2.play(); //換另一首
    else sound1.play();
  }
}


貝茲曲線1
// week12_2_bezier_sample
// 貝茲曲線
// 按右鍵,找 bezier() 函式的網站文件
size(500,500);
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);



貝茲曲線2
// week12_3_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);
}


貝茲曲線3
// week12_4_bezier_for_t_t0_0_many_t
// https://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(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);
}


貝茲曲線4
// 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;
  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;
  }
}


貝茲曲線5
// 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;
  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 想不到名字

 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;
  }
}


week12 Tina

 week12_01_libraries_sound_SoundFile_sound_isPlaying

//官網-Documention文件-Libraries函式庫-Sound聲音部分

//https://processing.org/reference/libraries/sound/index.html

//我們教過 piay() stop() pause()

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();

  }

}








week12_02_bezier_

//按右鍵,找bazier()函式的網站文件

//https://processing.org/reference/bezier_.html

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_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();//以下是由文件裡複製來的

  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_04_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_05_bezier_ArrayList_class_Ball_sraw_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));

  //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_06_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;

  }

}





11160383-HSY-互動科技

 音效

//Week12-01-Libaries

//官網-Documentation文件-Libraries函式庫(圖書館)-Sound的部分


import processing.sound.*;

SoundFile sound1, sound2;

int playing = 2;

void setup(){

  size(640, 360);

  background(255);

  sound1 = new SoundFile(this, "Intro Sound_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-02
//按右鍵,找bezier()函式的網站文件
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;
  }
}

w-12 coding.....

 001.

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();

  }

}

----------------------------------------------------------------------------
002.
void setup() {
  size(500, 500);
}
PVector p0 = new PVector(340, 80);
PVector p1 = new PVector(80, 80);
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);
}
-----------------------------------------------------------------------------------------
003.
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);
  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.02){
  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);
}
--------------------------------------------------------------------------------------------
004.
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);
  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));
  }
  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;
  }
}

-----------------------------------------------------------------------------------------
005.

Week12

 Weelk12

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();
 }
}


//按右鍵,找bezier函式的網站文件
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);
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); 
}
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);
}
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;
  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;
  }
}



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;
  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



 //week12_01_libraries-sound

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()) {//音樂1有沒有在播放
    playing=1;
  } else if (sound2.isPlaying()) {//音樂2有沒有在撥放
    playing=2;
  } else {//沒有任何音樂在撥放
    if (playing==1)sound2.play();//換另外一首
    else sound1.play();
  }
}

//week12_02-bezier-sample
//按右鍵,找bezier()函式的網站文件
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-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();
  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-04-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_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;
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;
  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_06_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;
  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 access很煩


//week12_01_libraries_sound

// 官網-Documentaion 文件-Libraries函式庫(圖書館)-Sound聲音部分

//https://processing.org/reference/libraries/sound/index.html

//我們教過play() stop() pause()

import processing.sound.*;

SoundFile sound1, sound2;

//import processing.sound.*;

//SoundFile sound1, sound2; //兩段音樂

int playing = 1;

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())//音樂1有沒有在播放

  {

    playing=1;

  } else if (sound2.isPlaying()) {

    playing=2;

  } else {//沒有任何音樂再撥放

    if (playing==1) sound2.play();//換另一首

    else sound1.play();

  }

}



// week12_02_bezier_sample

//按右鍵,找bezier()函式的網站文件

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_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();
  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_04_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, 320);
PVector p3 = new PVector(120, 300);
float t0 =0.0;
void draw() {
  background(255);
  noFill();
  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_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;
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;
  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_06_bezier_ArrayList_class_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;
  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;
  }
}