2021年11月22日 星期一

week09

 嗨


🔸我們讓小球掉下來

//能不能動起來!!掉下來的金幣(座標x,y) float x=250,y=250,vx=0,vy=3; void setup() { size(500,600); } void draw() { background(255); ellipse(x,y,50,50); y=y+vy; }






🔹接著我們再跑出一顆小球,可以感覺的到一顆掉得比較快

//能不能動起來!!掉下來的金幣(座標x,y) float x=250,y=0,vx=0,vy=3; float x2=150,y2=50,vx2=0,vy2=2; void setup() { size(500,600); } void draw() { background(255); ellipse(x,y,50,50); ellipse(x2,y2,50,50); y=y+vy; y2=y2+vy2; }



🔸接著用陣列的方式,有4顆小球跑出來,而且速度快慢都不相同
//能不能動起來!!掉下來的金幣(座標x,y) float []x={250,150,350,300}; float []y={0,50,80,100}; float []vx={0,0,0,0}; float []vy={3,2,2.5,6}; void setup() { size(500,600); } void draw() { background(255); for(int i=0;i<4;i++) { ellipse(x[i],y[i],50,50); y[i]=y[i]+vy[i]; } }

🔹接著我們讓他變成小彈簧

//能不能動起來!!掉下來的金幣(座標x,y) float []x={250,150,350,300}; float []y={0,50,80,100}; float []vx={0,0,0,0}; float []vy={3,2,2.5,4}; void setup() { size(500,600); } void draw() { background(255); for(int i=0;i<4;i++) { ellipse(x[i],y[i],50,50); y[i]=y[i]+vy[i]; if(y[i]>600)vy[i]=-vy[i]; if(y[i]<0)vy[i]=-vy[i]; } }


🔸我們讓紅色球碰到黃色球的時候,他會停下來

//能不能動起來!!掉下來的金幣(座標x,y) float []x={250,150,350,300}; float []y={0,50,80,100}; float []vx={0,0,0,0}; float []vy={3,2,2.5,4}; void setup() { size(500,600); } void draw() { background(255); for(int i=0;i<4;i++) { fill(255,255,0); ellipse(x[i],y[i],50,50); if(dist(mouseX,mouseY,x[i],y[i])<=50) { continue; } y[i]=y[i]+vy[i]; if(y[i]>600)vy[i]=-vy[i]; if(y[i]<0)vy[i]=-vy[i]; } fill(255,0,0); ellipse(mouseX,mouseY,50,50); }



🔹接著我們讓黃色球球消失

//能不能動起來!!掉下來的金幣(座標x,y) float []x={250,150,350,300}; float []y={0,50,80,100}; float []vy={3,2,2.5,4}; boolean []dead={false,false,false,false}; void setup() { size(500,600); } void draw() { background(255); for(int i=0;i<4;i++) { if(dist(mouseX,mouseY,x[i],y[i])<=50) { dead[i]=true; } if(dead[i]==true)continue; fill(255,255,0); ellipse(x[i],y[i],50,50); y[i]=y[i]+vy[i]; if(y[i]>600)vy[i]=-vy[i]; if(y[i]<0)vy[i]=-vy[i]; } fill(255,0,0); ellipse(mouseX,mouseY,50,50); }


🔸我們來探討一下boolen,按下去是紅色,沒按的時候是綠色

//練習 boolean變數true成立,false不成立 boolean down=true; void setup() { size (500,300); } void draw() { if(mousePressed)down=true; else down=false; if(down)background(255,0,0);//紅色 else background(0,255,0);//綠色 }

🔹我們跑出多一點球球,且紅球碰到黃球會消滅他

//能不能動起來!!掉下來的金幣(座標x,y) float []x; float []y; float []vy; boolean []dead; int N=20; void setup() { size(500,600); x=new float[N]; y=new float[N]; vy=new float[N]; dead =new boolean[N]; for(int i=0;i<N;i++) { x[i] = random(500); y[i] = random(100,200); vy[i] = random(3,4); dead[i]=false; } } void draw() { background(255); for(int i=0;i<N;i++) { if(dist(mouseX,mouseY,x[i],y[i])<=50)if(dist(mouseX,mouseY,x[i],y[i])<=50) { dead[i]=true; } if(dead[i]==true)continue; fill(255,255,0); ellipse(x[i],y[i],50,50); y[i]=y[i]+vy[i]; if(y[i]>600)vy[i]=-vy[i]; if(y[i]<0)vy[i]=-vy[i]; } fill(255,0,0); ellipse(mouseX,mouseY,50,50); }


🔸接著我們用另一種方法寫程式,且滑鼠碰到球球,球球便會停止

class Ball{ float x,y,vx,vy; boolean dead; Ball() { x=random(500); y=random(100,200); vy=random(3,4); dead=false; } void draw() { ellipse(x,y,50,50); if(dist(mouseX,mouseY,x,y)<50) { dead=true; } if(dead==true)return; y=y+vy; if(y>500)vy=-vy; if(y<0)vy=-vy; } } Ball[]balls; void setup() { size(500,500); balls = new Ball[20]; for(int i=0;i<20;i++){ balls[i] = new Ball(); } } void draw() { background(255); for(int i=0;i<20;i++) { balls[i].draw(); } }


🔹我們讓滑鼠跟上白色球球,且消滅白色球球

class Ball{ float x,y,vx,vy; boolean dead; Ball() { x=random(500); y=random(100,200); vx=random(-4,4); vy=random(-4,4); dead=false; } void draw() { if(dead==true)return; ellipse(x,y,50,50); if(dist(mouseX,mouseY,x,y)<50) { dead=true; } x=x+vx; y=y+vy; if(y>500||y<0)vy=-vy; if(x>500||x<0)vx=-vx; } } Ball[]balls; void setup() { size(500,500); balls = new Ball[20]; for(int i=0;i<20;i++){ balls[i] = new Ball(); } } void draw() { background(255); for(int i=0;i<20;i++) { balls[i].draw(); } }


🔸我們加上重力加速度,讓球彈力增加的更多,我換了個球球的顏色!!

class Ball{ float x,y,vx,vy; boolean dead; Ball() { x=random(500); y=random(100,200); vx=random(-4,4); vy=random(-4,4); dead=false; } void draw() { if(dead==true)return; fill(10,242,186); ellipse(x,y,50,50); //if(dist(mouseX,mouseY,x,y)<50) //{ // dead=true; //} x=x+vx; y=y+vy; vy+=0.98; if(y>500||y<0)vy=-vy; if(x>500||x<0)vx=-vx; } } Ball[]balls; void setup() { size(500,500); balls = new Ball[20]; for(int i=0;i<20;i++){ balls[i] = new Ball(); } } void draw() { background(255); for(int i=0;i<20;i++) { balls[i].draw(); } }


🔹我們做很多個小點點,只要滑鼠碰到了就會整面顯示小點點的顏色


class Ball{//我們發明 Ball物件 float x, y, vx, vy; boolean dead; Ball(){//建構 同名的東西 reborn(); } void reborn(){ x = random(500); y = random(500); vy = random(-2,2); vx = random(-2,2); dead = false;//沒有死掉 } void draw(){ if(dead==true) return; fill(10,242,186); ellipse(x,y, 5,5); if( dist(mouseX,mouseY,x,y)<5 ){ dead=true; gameOver=true; } x = x + vx*1;//速度*時間=距離 y = y + vy*1; if(y>500 || y<0) reborn(); if(x>500 || x<0) reborn(); } } Ball [] balls; void setup(){ size(500,500); balls = new Ball[99]; for(int i=0; i<99; i++){ balls[i] = new Ball(); } } boolean gameOver=false; void draw(){ background(0); for(int i=0; i<99; i++){ balls[i].draw(); } if(gameOver) background(10,242,186); }





沒有留言:

張貼留言