2022年12月19日 星期一

END interaction week16

 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;

}




沒有留言:

張貼留言