2022年12月12日 星期一

END interaction week15

剩餘問題:object可隨機移動、object不能跑到範圍外、玩家靠近會逃跑/2



float [] objectx= new float[100];

float [] objecty= 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);

  }

  

}


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]);

    

    if(dist(bx, by, objectx[i], objecty[i]) < (bw+10)+10 && a>size1[i])//距離小於黑洞直徑時

    {

      //物體會按照黑洞目前走的方向逃走

      if(vx>=0 && objectx[i]<1570){

        objectx[i]+=0.5;

      }

      if(vx<=0 && objectx[i]>30){

        objectx[i]-=0.5;

      }

      if(vy>=0 && objecty[i]<870){

        objecty[i]+=0.5;

      }

      if(vy<=0 && objecty[i]<30){

        objecty[i]-=0.5;

      }

    }

    if(dist(px, py, objectx[i], objecty[i]) < (bw+10)+10 && a>size1[i])

    {

      if(wx>=0 && objectx[i]<1570){

        objectx[i]+=0.5;

      }

      if(wx<=0 && objectx[i]>30){

        objectx[i]-=0.5;

      }

      if(wy>=0 && objecty[i]<870){

        objecty[i]+=0.5;

      }

      if(wy<=0 && objecty[i]>30){

        objecty[i]-=0.5;

      }

    }

    

    if(dist(bx,by,objectx[i],objecty[i]) < (bw+10)/2 && a>size1[i])

    {

      bw+=1;

      bh+=1;

      objectx[i]=-100; 

      objecty[i]=-100;

      

      a+=size1[i]/10;

    }

    

    if(dist(px,py,objectx[i],objecty[i]) < (bw+10)/2 && b>size1[i])

    {

      pw+=1;

      ph+=1;

      objectx[i]=-100; 

      objecty[i]=-100;

      

      b+=size1[i]/10;

    }

    

    

    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) < (bw+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;

}

沒有留言:

張貼留言