球遊戲
1.讓球掉下來
程式如下:
float x=250,y=0,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=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;
}
3.用for+陣列做很多不同速度的球
float []x={250,150,350,300};
float []y={0,80,50,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];
}
}
float []x={250,150,350,300};
float []y={0,80,50,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]; ///撞到上方
}
}
5.碰到滑鼠球就不會動
程式如下:
float []x={250,150,350,300};
float []y={0,80,50,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(200,51,10); 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(20,55,200); ellipse(mouseX,mouseY,50,50); ///滑鼠球
}
6.碰到滑鼠球就會不見
程式如下:
float []x={250,150,350,300};
float []y={0,80,50,100};
float []vy={3,2,2.5,4};
boolean []dead={false,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(200,51,10); 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(20,55,200); ellipse(mouseX,mouseY,50,50);
}
8.把球變多,位置用亂數決定
程式如下:
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); ///500以下的亂數
y[i]=random(100,200);
vy[i]=random(3,4); ///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(200,51,10); 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(20,55,200); ellipse(mouseX,mouseY,50,50);
}
9.用class物件
程式如下:
class Ball{ ///發明class物件
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();
}
}
10.加入vx
程式如下:
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();
}
}
11.重力加速度
程式如下:
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;
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();
}
}
12.碰到紅點變紅色
程式如下:
class Ball{
float x,y,vx,vy;
boolean dead;
Ball(){
reborn();
}
void reborn(){
x=random(500);
y=random(100,200);
vx=random(-4,4);
vy=random(-4,4);
dead=false;
}
void draw(){
if(dead==true)return;
fill(255,0,0); 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(0);
for(int i=0;i<99;i++){
balls[i].draw();
}
if(gameOver)background(255,0,0);
}













沒有留言:
張貼留言