2022年12月5日 星期一

Zi week14

修改了初始排列 :

color[] colArray = {

  color(227, 41, 54),

  color(41, 188, 227),

  color(41, 227, 48),

  color(250, 239, 13),

};

void setup() {

  size(600, 500);

  for (int k=0; k<20; k++) {

    hole[0][k]=1;

    hole[1][k]=1;

  }

}

int x=300, y=500;

float angle1=0, angle2=0;

boolean bulletFlying=false;

float bulletX, bulletY;

float bulletVX, bulletVY;

int [][] hole = new int[5][20];


void draw() {

  background(#FFFFF2);

  fill(0, 0, 0);

  ellipse(x, y, 80, 80);

  strokeWeight(40);

  strokeCap(SQUARE);

  line(x, y, x+80*cos(angle1), y+80*sin(angle1));

  strokeWeight(1);

  for (int i=0; i<5; i++) {

    for (int j=0; j<20; j++) {

      if (hole[i][j]==0) continue;//noFill();

      else fill(255, 255, 0);

      if(i%2==0) ellipse(15+j*30, 15+i*30, 30, 30);

      else ellipse(30+j*30, 40+i*sqrt(3), 30, 30);

    }

  }

  if (bulletFlying) {

    bulletX+= bulletVX;

    bulletY+= bulletVY;

    fill(255, 255, 0);

    ellipse(bulletX, bulletY, 30, 30);

    if (bulletX > 585) bulletVX=-bulletVX;

    if (bulletX < 15) bulletVX=-bulletVX;

    if (bulletY < 15 || touch_yellow_ball() ) {

      //bulletVY=0;bulletVX=0;

      put_ball_in_hole();

      bulletFlying=false;

    }

  }

}


boolean touch_yellow_ball() {

  for (int i=0; i<5; i++) {

    for (int j=0; j<20; j++) {

      if ( hole[i][j]==1 && dist(bulletX, bulletY, 15+j*30, 15+i*30)<23) return true;

    }

  }

  return false;

}


void put_ball_in_hole() {

  float nearest = 99999;

  int nowI=0, nowJ=0;

  for (int i=0; i<5; i++) {

    for (int j=0; j<20; j++) {

      float now = dist( 15+j*30, 15+i*30, bulletX, bulletY);

      if (now<nearest && hole[i][j]==0) {

        nearest = now;

        nowI=i;

        nowJ=j;

      }

    }

  }

  hole[nowI][nowJ]=1;

}


void keyPressed() {

  if (keyCode==UP) angle1-=0.05;

  if (keyCode==DOWN) angle1+=0.05;

  if (key==' ') {

    bulletFlying=true;

    bulletX=x;

    bulletY=y;

    bulletVX=cos(angle1)*5;

    bulletVY=sin(angle1)*5;

  }

}



沒有留言:

張貼留言