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

沒有留言:
張貼留言