week12
week12_01_libraries
1.聲音函式多教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()){//音樂2有沒有撥放
playing=2;
} else{
if(playing==1) sound2.play();//換另外一首
else sound1.play();
}
}
week12_03_1_3_3_1_equation_mouseDragged_change_t
1.滑鼠控制小圓球再曲線上的移動
程式碼
//week12_03_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 * (1 - t) * (1 - t) * t+ 3 * p2.x * (1 - t) * t * t+ p3.x * t * t * t;
float y = p0.y * (1 - t) * (1 - t) * (1 - t)+ 3 * p1.y * (1 - t) * (1 - t) * t+ 3 * p2.y * (1 - t) * t * 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
1.利用for迴圈做出很多球一起動
程式碼
//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);
size(400, 400);
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 * (1 - t) * (1 - t) * t+ 3 * p2.x * (1 - t) * t * t+ p3.x * t * t * t;
float y = p0.y * (1 - t) * (1 - t) * (1 - t)+ 3 * p1.y * (1 - t) * (1 - t) * t+ 3 * p2.y * (1 - t) * t * 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
1.複習ArrayList()和class
2.自動生球
3.還沒做消除球的機制
程式碼
//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);
size(400, 400);
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 * (1 - t) * (1 - t) * t
+ 3 * p2.x * (1 - t) * t * t
+ p3.x * t * t * t;
float y = p0.y * (1 - t) * (1 - t) * (1 - t)
+ 3 * p1.y * (1 - t) * (1 - t) * t
+ 3 * p2.y * (1 - t) * t * t
+ p3.y * t * t * t;
ellipse(x, y, 10, 10);
t += 0.001;
}
}
week12_06_bezier_ArrayList_size_get_remove
1.完善
程式碼
//week12_06_bezier_ArrayList_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);
size(400, 400);
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 * (1 - t) * (1 - t) * t
+ 3 * p2.x * (1 - t) * t * t
+ p3.x * t * t * t;
float y = p0.y * (1 - t) * (1 - t) * (1 - t)
+ 3 * p1.y * (1 - t) * (1 - t) * t
+ 3 * p2.y * (1 - t) * t * t
+ p3.y * t * t * t;
ellipse(x, y, 10, 10);
t += 0.001;
}
}
沒有留言:
張貼留言