2024年12月16日 星期一

week151515

 

week15-1

void setup() {

  size(640, 360);

}

Ball ball = new Ball(100, 200, 20);

void draw() {

  ball.display();

}

class Ball {

  float x, y, r;

   Ball(int x0, int y0, int r0) {

    x = x0;

    y = y0;

    r = r0;

  }

  void display() {

    ellipse(x, y, r+r, r+r);

  }

}


week15-2

void setup() {
  size(640, 360);
}

Ball ball = new Ball(100, 200, 20);

void draw() {
  ball.update(); 
  ball.display();
}

開新分頁Ball

class Ball {
  float x, y, r;
  float vx, vy;

  Ball(int x0, int y0, int r0) {
    x = x0;
    y = y0;
    r = r0;

    vx = random(-10, +10);
    vy = random(-10, +10);
  }

  void update() {
    if (x + vx > 640 || x + vx < 0) vx = -vx;
    if (y + vy < 0 || y + vy > 360) vy = -vy;

    x += vx;
    y += vy;
  }

  void display() {
    ellipse(x, y, r+r, r+r);
  }
}


week15-3

void setup() {
  size(640, 360);
}

Ball ball = new Ball(100, 200, 20);
Ball ball2 = new Ball(300,200,60);
void draw() {
  background(51);
  if(ball.checkCollision(ball2)) fill(#FFAAAA);
  else fill(255);
  ball.update(); 
  ball.display();
  ball2.update();
  ball2.display();
}
開新分頁Ball
class Ball {
  float x, y, r;
  float vx, vy;
  Ball(int x0, int y0, int r0) {
    x = x0;
    y = y0;
    r = r0;
    vx = random(-10, +10);
    vy = random(-10, +10);
  }
  boolean checkCollision(Ball other){
    if(dist(x,y,other.x,other.y)<r+other.r)return true;
    else return false;
  }
  void update() {
    if (x + vx > 640 || x + vx < 0) vx = -vx;
    if (y + vy < 0 || y + vy > 360) vy = -vy;

    x += vx;
    y += vy;
  }

  void display() {
    ellipse(x, y, r+r, r+r);
  }
}


week15-4



void setup() {

  size(640, 360);

}


Ball ball = new Ball(100, 200, 20);

Ball ball2 = new Ball(300,200,60);

void draw() {

  background(51);

  if(ball.checkCollision(ball2)) fill(#FFAAAA);

  else fill(255);

  ball.update(); 

  ball.display();

  ball2.update();

  ball2.display();

}

開新分頁Ball


class Ball {

  float x, y, r;

  float vx, vy;

  Ball(int x0, int y0, int r0) {

    x = x0;

    y = y0;

    r = r0;

    vx = random(-10, +10);

    vy = random(-10, +10);

  }

  boolean checkCollision(Ball other){

    if(dist(x,y,other.x,other.y)<r+other.r)

    PVector diff = new PVector(other.x-x,other.y-y);

    float len = diff.mag();

    float a = diff.heading();

    

    PVector N = diff.copy().normalize();

    N.mult(N.dot(new PVector(vx,vy)));

    PVector N2 = new PVector(-N.y,N.x).normalize();

    N2.mult(N2.dot(new PVector(vx,vy)));

    

    PVector M = diff.copy().normalize();

    M.mult( M.dot(new PVector(other.vx, other.vy)) );

    PVector M2 = new PVector(-M.y, M.x).normalize();

    M2.mult( M2.dot(new PVector(other.vx, other.vy)) );


    PVector newW1 = PVector.add(M, N2);

    PVector newW2 = PVector.add(N, M2);

    vx = newW1.x;

    vy = newW1.y;

    other.vx = newW2.x;

    other.vy = newW2.y;

    return true;

    } else return false;

}

 void update() {

  if(x+vx > 640-4 || x+vx < 0+r) vx = -vx;

  if(y+vy < 0+r || y+vy >360-r) vy = -vy;

  x += vx;

  y += vy;

  }

  void display() {

    ellipse(x, y, r+r, r+r);

  }

}


week15-5


int [][] maze = {

  {1,1,1,1,1,1,1,1,1,1},

  {1,0,0,0,1,0,0,0,1,1},

  {1,1,0,1,1,0,1,0,1,1},

  {1,1,0,1,0,0,1,0,1,1},

  {1,1,0,1,0,1,0,1,1,1},

  {1,0,0,0,1,0,0,0,1,1},

  {1,0,1,1,0,1,1,0,1,1},

  {1,0,0,0,0,1,1,0,1,1},

  {1,1,1,1,1,1,0,0,1,1},

  {1,1,1,1,1,1,1,1,1,1},

};


void setup() {

  size(400, 400);

}


void draw() {

  for(int i=0; i<maze.length; i++) {

    for(int j=0; j<maze[0].length; j++) {

      if(maze[i][j] == 1) fill(0);

      else fill(255);

      rect(j*40, i*40, 40, 40);

    }

  }

}


week15-6



int [][] maze = {

  {1,1,1,1,1,1,1,1,1,1},

  {1,0,0,0,1,0,0,0,1,1},

  {1,1,0,1,1,0,1,0,1,1},

  {1,1,0,1,0,0,1,0,1,1},

  {1,1,0,1,0,1,0,1,1,1},

  {1,0,0,0,1,0,0,0,1,1},

  {1,0,1,1,0,1,1,0,1,1},

  {1,0,0,0,0,1,1,0,1,1},

  {1,1,1,1,1,1,0,0,1,1},

  {1,1,1,1,1,1,1,1,1,1},

};

void setup() {

  size(400, 400);

}

void draw() {

  for(int i=0; i<maze.length; i++) {

    for(int j=0; j<maze[0].length; j++) {

      if(maze[i][j] == 1) fill(0);

      else fill(255);

      rect(j*40, i*40, 40, 40);

    }

  }

}

void draw() {

  for(int i=0; i<maze.length; i++) {

    for(int j=0; j<maze[0].length; j++) {

      if(maze[i][j] == 1) fill(0);

      else fill(255);

      rect(j*40, i*40, 40, 40);

    }

  }

  

  fill(255, 0, 0);

  rect(startJ*40, startI*40, 40, 40);

  

  for(int i=0; i<maze.length; i++) {

    for(int j=0; j<maze[0].length; j++) {

      if(visited[i][j] > 0) {

        fill(0, 0, 255);

        text(""+visited[i][j], j*40+20, i*40+20);

      }

    }

  }

}


void mousePressed() { // 按下 mouse 會往右 or 往下走

  if(maze[I+1][J] == 0) { // 下面這格是空格,可以走

    I = I+1;

    visited[I][J] = ++step;

  } else if(maze[I][J+1] == 0) {

    J = J+1;

    visited[I][J] = ++step;

  }

}























沒有留言:

張貼留言