1. void setup(){
size(640,360); ball = new Ball(100,200,20); } Ball ball; 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); } }
2.
void setup(){ size(640,360); ball = new Ball(100,200,20); } Ball ball; 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); } }
3. 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); } }
4. 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(); print(len); 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))); println(N.mag()); 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 newN1 = PVector.add(M,N2); PVector newN2 = PVector.add(N,M2); vx = newV1.x; vy = newV1.y; other.vx = newN2.x; other.vy = newN2.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); } }
5. 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,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,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);
}
}
}
6. 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,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,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);
visited[I][J] = step;
}
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);
}
7. 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,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,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);
visited[I][J] = step;
}
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.length;j++){
if(visited[i][j]>0){
fill(0,0,255);
text(""+visited[i][j],j*40+20,i*40+20);
}
}
}
}
void mousePressed(){
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;
}
}
8. 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,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,1,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);
//visited[I][J] = step;
}
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.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);
}







沒有留言:
張貼留言