complete version......maybe
float [] objectx= new float[100];
float [] objecty= new float[100];
float [] objectvx= new float[100];
float [] objectvy= new float[100];
float [] objectdir= new float[100];
float [] objectv= new float[100];
int [] size1= new int[100];
void setup()
{
size(1600,900);
PFont font=createFont("標楷體",15);
textFont(font);
textAlign(CENTER,CENTER);
for(int i=0;i<100;i++)
{
objectx[i]=random(1500)+50;
objecty[i]=random(800)+50;
size1[i]=int(random(100)+30);
objectdir[i] = random(PI*2);
objectv[i] = random(0.5);
}
}
void draw()
{
background(#666554);
for(int i=0;i<100;i++)
{
fill(255,0,0);
ellipse(objectx[i],objecty[i],size1[i]/2,size1[i]/2);
fill(0);
text(size1[i],objectx[i],objecty[i]);
//objectvx[i] = random(-1,+1);
//objectvy[i] = random(-1,+1);
if(random(10)<1) objectdir[i] += random(-0.4,+0.4);
objectvx[i] = cos(objectdir[i])*objectv[i];
objectvy[i] = sin(objectdir[i])*objectv[i];
///移動方向
///跑到邊界會從另一邊出來
if(objectx[i]>=1600)
{
objectvx[i] = -1550;
}
if(objectx[i]<=0 && objectx[i]>=-500)
{
objectvx[i] = +1550;
}
if(objecty[i]>=900)
{
objectvy[i] = -850;
}
if(objecty[i]<=0 && objecty[i]>=-500)
{
objectvy[i] = +850;
}
if(dist(bx, by, objectx[i], objecty[i]) < (bw+10)+10 && a>size1[i])//距離小於黑洞直徑時
{
//物體會逃走
if(bx>=objectx[i] && objectx[i]<1550)
{
objectvx[i] = -0.5;
}
if(bx<=objectx[i] && objectx[i]>50)
{
objectvx[i] = +0.5;
}
if(by>=objecty[i] && objecty[i]<850)
{
objectvy[i] = -0.5;
}
if(by<=objecty[i] && objecty[i]>50)
{
objectvy[i] = +0.5;
}
}
if(dist(px, py, objectx[i], objecty[i]) < (pw+10)+10 && b>size1[i])
{
if(px>=objectx[i] && objectx[i]<1570)
{
objectvx[i] = -0.5;
}
if(px<=objectx[i] && objectx[i]>30)
{
objectvx[i] = +0.5;
}
if(py>=objecty[i] && objecty[i]<870)
{
objectvy[i] = -0.5;
}
if(py<=objecty[i] && objecty[i]>30)
{
objectvy[i] = +0.5;
}
}
if(dist(bx,by,objectx[i],objecty[i]) < (bw+10)/2 && a>size1[i])
{
bw+=1;
bh+=1;
objectx[i]-=3000;
objecty[i]-=3000;
objectvx[i] = 0;
objectvy[i] = 0;
a+=size1[i]/10;
fill(255);
ellipse(objectx[i]+3000,objecty[i]+3000,size1[i],size1[i]);
}
objectx[i] += objectvx[i];
objecty[i] += objectvy[i];
if(dist(px,py,objectx[i],objecty[i]) < (pw+10)/2 && b>size1[i])
{
pw+=1;
ph+=1;
objectx[i]-=3000;
objecty[i]-=3000;
objectvx[i] = 0;
objectvy[i] = 0;
b+=size1[i]/10;
fill(0);
ellipse(objectx[i]+3000,objecty[i]+3000,size1[i],size1[i]);
}
if(dist(bx,by,px,py) < (bw+10)/2 && a>b)
{
bx=-200;
by=-200;
px=-200;
py=-200;
background(#666554);
textSize(80);
fill(0);
text("blackhole win",800,450);
ellipse(800,700,100,100);
fill(255);
textSize(30);
text(a,800,700);
}
else if(dist(px,py,bx,by) < (pw+10)/2 && b>a)
{
bx=-200;
by=-200;
px=-200;
py=-200;
background(#666554);
textSize(80);
fill(255);
text("whitehole win",800,450);
ellipse(800,700,100,100);
fill(0);
textSize(30);
text(b,800,700);
}
else
{
textSize(15);
}
}
fill(0);
ellipse(bx,by,bw,bh);
fill(255);
text(a,bx,by);
bx+=vx;
by+=vy;
fill(255);
ellipse(px,py,pw,ph);
fill(0);
text(b,px,py);
px+=wx;
py+=wy;
}
int a=50,b=50;
float bx=30,by=30;
int bw=50,bh=50;
float px=1570,py=30;
int pw=50,ph=50;
float vx=0,vy=0;
float wx=0,wy=0;
void keyPressed()
{
if(a<150)
{
if(keyCode==LEFT) vx=-2;
if(keyCode==RIGHT) vx=2;
if(keyCode==UP) vy=-2;
if(keyCode==DOWN) vy=2;
}
if(a>=150)
{
if(keyCode==LEFT) vx=-1;
if(keyCode==RIGHT) vx=1;
if(keyCode==UP) vy=-1;
if(keyCode==DOWN) vy=1;
}
if(bx==-100 &&by==-100)
{
if(keyCode==LEFT) vx=0;
if(keyCode==RIGHT) vx=0;
if(keyCode==UP) vy=0;
if(keyCode==DOWN) vy=0;
}
if(b<150)
{
if(keyCode=='A') wx=-2;
if(keyCode=='D') wx=2;
if(keyCode=='W') wy=-2;
if(keyCode=='S') wy=2;
}
if(b>=150)
{
if(keyCode=='A') wx=-1;
if(keyCode=='D') wx=1;
if(keyCode=='W') wy=-1;
if(keyCode=='S') wy=1;
}
if(px==-200 && py==-200)
{
if(keyCode=='A') wx=0;
if(keyCode=='D') wx=0;
if(keyCode=='W') wy=0;
if(keyCode=='S') wy=0;
}
}
void keyReleased()
{
if(keyCode==LEFT) vx=0;
if(keyCode==RIGHT) vx=0;
if(keyCode==UP) vy=0;
if(keyCode==DOWN) vy=0;
if(keyCode=='A') wx=0;
if(keyCode=='D') wx=0;
if(keyCode=='W') wy=0;
if(keyCode=='S') wy=0;
}

沒有留言:
張貼留言