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,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();
}
------------------------------------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,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();
}
--------------------------------------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();//mag=maganitude 長度
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(N.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,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,0,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);
}
}
}
================================================================================================
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,0,1},
{1,1,1,1,1,1,1,1,1,1}
};
int [][]visited=new int [10][10];
int startI=1,startJ=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);
}
================================================================================================

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,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);
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);
}
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;
}
}
================================================================================================
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,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);
// 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[0].length;j++){
if(visited[i][j]>0)
{
fill(0,0,255);
text(""+visited[i][j],j*40+20,j*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);
}
沒有留言:
張貼留言