2024年12月16日 星期一

凹凹凸凸

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

  }








void setup(){

  size(640,360);

}

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

void draw(){

  ball.update();

  ball.display();

}

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

  }

}








void setup(){

  size(640,360);

}

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

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

}

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

  }

}








void setup(){

  size(640,360);

}

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

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

}

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+vx,y+vy,other.x+other.vx,other.y+other.vy)<=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 newV1=PVector.add(M,N2);

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

    vx=newV1.x;

    vy=newV1.y;

    other.vx=newV2.x;

    other.vy=newV2.y;

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

  }

}








int [][]maze={

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

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

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

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

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

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

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

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

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

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

};

int [][] visited=new int[10][10];

int startI=1,startJ=1,I=1,J=1,step=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);

    }

  }

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

      }

    }

  }

}

boolean DFS(int i,int j,int s){

  if(i==8 && j==8) return true;

  if(maze[i][j]==1) return false;

  if(visited[i][j]>0) return false;

  visited[i][j]=s;

  if(DFS(i+1,j,s+1)) return true;

  if(DFS(i-1,j,s+1)) return true;

  if(DFS(i,j+1,s+1)) return true;

  if(DFS(i,j-1,s+1)) return true;

  visited[i][j]=0;

  return false;

}

void mousePressed(){

  visited[1][1]=0;

  DFS(1,1,1);

}









沒有留言:

張貼留言