今天要做落下的金幣
- 首先要做出落下的球
程式碼:
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=y+3;//y++的三倍速度
y=y+vy;//vy是速度
}
- 多了二號球做出落下的速度差別
程式碼:
float x=250,y=0,vx=0,vy=4;
float x2=150,y2=0,vx2=0,vy2=3;
void setup(){
size(500,600);
}
void draw(){
background(255);
ellipse(x,y,50,50);
ellipse(x2,y2,50,50);
y=y+vy;//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++){
ellipse(x[i],y[i],50,50);
y[i] = y[i] + vy[i];//vy是速度
}
}
- 碰到地板後回彈&再碰到天花板後會再回彈
程式碼:
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];//vy是速度
//以下為回彈
if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的
if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變
}
}
- 做出一個碰到可以暫停的球
程式碼 :
//可以有任意組嗎
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(#F7E302);
ellipse(x[i],y[i],50,50);
if(dist(mouseX,mouseY,x[i],y[i])<=50){
continue;
}
y[i] = y[i] + vy[i];//vy是速度
if(y[i]>600)vy[i]=-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 []vy={3,2,2.5,4};boolean []dead={false,false,false,false};//false 0,true 1void 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(#F7E302);ellipse(x[i],y[i],50,50);y[i] = y[i] + vy[i];//vy是速度if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變}fill(255,0,0);ellipse(mouseX,mouseY,50,50);}
- 增加球數
程式碼:
//可以有任意組嗎
float []x;
float []y;
float []vy;
boolean []dead;//false 0,true 1
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<10;i++){
x[i]=random(500);
y[i]=100;
vy[i]=random(2,4);
dead[i]=false;
}
}
void draw(){
background(255);
for(int i=0; i<N ;i++){
if(dist(mouseX,mouseY,x[i],y[i])<=50){
dead[i]=true;//碰到就死掉
}
if(dead[i]==true)continue;//如果沒有死掉
fill(#F7E302);ellipse(x[i],y[i],50,50);
y[i] = y[i] + vy[i];//vy是速度
if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的
if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變
}
fill(255,0,0);ellipse(mouseX,mouseY,50,50);
}
- 使用CLASS ball製作出一大堆的球
程式碼:
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;
}
}
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(500);
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();
}
}
- 加入一行 vy+=0.98;//重力加速度
- 製作出遊戲-碰到球就黑屏
程式碼:class Ball{float x,y,vx,vy;boolean dead;Ball(){//建構同名的東西reborn();}void reborn(){x= random(500);y= random(500);vx= random(-2,2);vy= random(-2,2);dead = false;}void draw(){if (dead==true)return;fill(#78C0E5);ellipse(x,y,5,5);if(dist(mouseX,mouseY,x,y)<5){dead=true;gameOver=true;}x= x+vx;y=y+vy;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(255);for(int i=0;i<99;i++){balls[i].draw();if(gameOver)background(256);}}
- 因為大家都不知道boolean所以有了這個補充
- if(0)=false;
- java創始人覺得不合理,覺得if中只能填英文不能填數字
- 程式碼結果--當按下滑鼠會變色
boolean down=false;程式碼:
void setup(){}size(500,500);if(mousePressed)down=true;void draw(){if(down) background(255,0,0);else down=false;else background(0,255,0);
}
沒有留言:
張貼留言