球體掉落
1.球體落下
float x=250,y=250;
void setup()
{
size(500,600);
}
void draw()
{
background(255);//防止殘影將背景設成白色
ellipse(x,y,50,50);
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;//向下加速度
}
2.多個球體
float x=250,y=50,vx=0,vy=3;//設立變數
float x2=150,y2=50,vx2=0,vy2=1;//設立第二個變數
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;//向下加速度
}
//改用陣列設定變數
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++)//使用for迴圈跑出4個球,再根據上方陣列有不同的呈現效果
{
ellipse(x[i],y[i],50,50);
y[i] = y[i] + vy[i];//向下加速度
}
}
3.反彈球體
//改用陣列設定變數
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++)//使用for迴圈跑出4個球,再根據上方陣列有不同的呈現效果
{
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];//碰到上方
}
}
球體碰撞
1.距離碰撞
//改用陣列設定變數
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++)//使用for迴圈跑出4個球,再根據上方陣列有不同的呈現效果
{
if(dist(mouseX,mouseY,x[i],y[i])<=50)
{
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);
}
//改用陣列設定變數
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};
boolean[]dead={false,false,false,false};//false 0,true 1
void setup()
{
size(500,600);
}
void draw()
{
background(255);//防止殘影將背景設成白色
for(int i=0;i<4;i++)//使用for迴圈跑出4個球,再根據上方陣列有不同的呈現效果
{
if(dist(mouseX,mouseY,x[i],y[i])<=50)//距離判斷
{
dead[i]=true;
}
if(dead[i]==true)continue;//死了就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);
}
2.boolean練習
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);
}
3.class物件練習
//使用class物件
class Ball{//發明Ball物件
float x,y,vx,vy;
boolean dead;
Ball(){//建構同名的東西
x = random(500);
y = random(100,200);
vy = random(3,4);
dead = false;//沒有死掉
}
void draw(){
if(dead==true)return;
ellipse(x,y,50,50);
if(dist(mouseX,mouseY,x,y)<50){
dead=true;
}
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();
}
}
沒有留言:
張貼留言