week08
碰撞偵測:Mario vs Pikachu
void setup(){ size(400,400); } float x=200,y=200, vx=1,vy=1; void draw(){ ellipse(x,y,10,10); x+=vx; y+=vy; }
void setup(){ size(400,400); } float x=50,y=250, vx=2,vy=-20; void draw(){ ellipse(x,y,10,10); x += vx; y += vy; vy+=0.98; }
void setup(){ size(400,400); } float x=50,y=250, vx=2,vy=-20; void draw(){ x += vx; y += vy; vy+=0.98; if(y>350){ y=350; } ellipse(x,y,10,10); }
//能量耗損,數度變慢
void setup(){ size(400,400); } float marioX=50,marioY=250, vx=0,vy=0; void draw(){ background(108,137,255); marioX+=vx; fill(255,0,0);ellipse(marioX,marioY,15,20); fill(299,119,42);rect(0,260,400,150); } void keyPressed(){ if(keyCode==RIGHT)vx=2; if(keyCode==LEFT)vx=2; }
void setup(){
size(400,400);
}
float marioX=50,marioY=250, vx=0,vy=0;
void draw(){
background(108,137,255);
marioX+=vx;
marioY+=vy;
//vy+=0.98;
fill(255,0,0);ellipse(marioX,marioY,15,20);
fill(299,119,42);rect(0,260,400,150);
}
void keyPressed(){
if(keyCode==RIGHT)vx=2;
if(keyCode==LEFT)vx=-2;
if(keyCode==UP)vy=-20;
}
void keyReleased(){
if(keyCode==LEFT||keyCode==RIGHT)vx=0;
}
球可以飛
void setup(){
size(400,400);
}
float marioX=50,marioY=250, vx=0,vy=0;
void draw(){
background(108,137,255);
marioX+=vx;
if(flying){
marioY+=vy;
vy+=0.98;
if(marioY>250){
marioY=250;
flying=false;
}
}
fill(255,0,0);ellipse(marioX,marioY,15,20);
fill(299,119,42);rect(0,260,400,150);
}
boolean flying=false;
void keyPressed(){
if(keyCode==RIGHT)vx=2;
if(keyCode==LEFT)vx=-2;
if(keyCode==UP){
vy=-20;
flying=true;
}
}
void keyReleased(){
if(keyCode==LEFT||keyCode==RIGHT)vx=0;
}
球碰到正方形不會穿過去
void setup(){
size(400,400);
}
float marioX=50,marioY=250, vx=0,vy=0;
void draw(){
background(108,137,255);
marioX+=vx;
if(flying){
marioY+=vy;
vy+=0.98;
if(marioY>250){
marioY=250;
flying=false;
}
}
fill(255,0,0);ellipse(marioX,marioY,15,20);
fill(299,119,42);rect(0,260,400,150);
fill(299,119,42);rect(200,150,20,20);
if(hitBox(200,150,20,20)){
vy=0;
marioY=150+20;
}
}
boolean hitBox(int x,int y,int w,int h){
if(x<marioX && marioX<x+w && y<marioY &&marioY<y+h) return true;
else return false;
}
boolean flying=false;
void keyPressed(){
if(keyCode==RIGHT)vx=2;
if(keyCode==LEFT)vx=-2;
if(keyCode==UP && flying==false){
vy=-20;
flying=true;
}
}
void keyReleased(){
if(keyCode==LEFT||keyCode==RIGHT)vx=0;
}
void setup(){ size(400,400); } float marioX=50,marioY=250, vx=0,vy=0; void draw(){ background(108,137,255); marioX+=vx; if(flying){ marioY+=vy; vy+=0.98; if(marioY>250){ marioY=250; flying=false; } } fill(255,0,0);ellipse(marioX,marioY,15,20); fill(299,119,42);rect(0,260,400,150); fill(299,119,42);rect(200,150,20,20); if(hitBox(200,150,20,20)){ if(vy>0){ marioY=150-10 flying=false; }else{ vy=0; marioY=150+20+10; } } } boolean hitBox(int x,int y,int w,int h){ if(x-7<marioX && marioX<x+w+7 && y-10<marioY &&marioY<y+h+10) return true; else return false; } boolean flying=false; void keyPressed(){ if(keyCode==RIGHT)vx=2; if(keyCode==LEFT)vx=-2; if(keyCode==UP && flying==false){ vy=-20; flying=true; } } void keyReleased(){ if(keyCode==LEFT||keyCode==RIGHT)vx=0; }
void setup(){ size(400,400); } float marioX=50,marioY=250, vx=0,vy=0; void draw(){ background(108,137,255); marioX+=vx; if(flying){ marioY+=vy; vy+=0.98; if(marioY>250){ marioY=250; flying=false; } } fill(255,0,0);ellipse(marioX,marioY,15,20); fill(299,119,42);rect(0,260,400,150); fill(299,119,42);rect(200,150,20,20); if(hitBox(200,150,20,20)){ if(vy>0){ marioY=150-10; flying=false; stand_box=true; }else{ vy=0; marioY=150+20+10; } } if(stand_box==true && flying==false && leaveBox(200,150,20,20)){ stand_box=false; flying=true; vy=0; } } boolean leaveBox(int x,int y,int w,int h){ if(x-7>marioX || marioX>x+w+7)return true; else return false; } boolean hitBox(int x,int y,int w,int h){ if(x-7<marioX && marioX<x+w+7 && y-10<marioY &&marioY<y+h+10) return true; else return false; } boolean flying=false,stand_box=false; void keyPressed(){ if(keyCode==RIGHT)vx=2; if(keyCode==LEFT)vx=-2; if(keyCode==UP && flying==false){ vy=-20; flying=true; } } void keyReleased(){ if(keyCode==LEFT||keyCode==RIGHT)vx=0; }
void setup(){size(400,400);}float marioX=50,marioY=250, vx=0,vy=0;void draw(){background(108,137,255);marioX+=vx;if(flying){marioY+=vy;vy+=0.98;if(marioY>250){marioY=250;flying=false;}}fill(255,0,0);ellipse(marioX,marioY,15,20);fill(299,119,42);rect(0,260,400,150);drawAndTestBox(100,150,20,20);drawAndTestBox(200,150,20,20);drawAndTestBox(300,150,20,20);}void drawAndTestBox(int x,int y,int w,int h){fill(229,119,42);rect(x,y,w,h);if(hitBox(x,y,w,h)){if(vy>0){marioY=y-10;flying=false;stand_box=true;}else{vy=0;marioY=y+h+10;}}if(stand_box==true && flying==false && leaveBox(x,y,w,h)){stand_box=false;flying=true;vy=0;}}boolean leaveBox(int x,int y,int w,int h){if(x-7>marioX || marioX>x+w+7)return true;else return false;}boolean hitBox(int x,int y,int w,int h){if(x-7<marioX && marioX<x+w+7 && y-10<marioY &&marioY<y+h+10) return true;else return false;}boolean flying=false,stand_box=false;void keyPressed(){if(keyCode==RIGHT)vx=2;if(keyCode==LEFT)vx=-2;if(keyCode==UP && flying==false){vy=-20;flying=true;}}void keyReleased(){if(keyCode==LEFT||keyCode==RIGHT)vx=0;}












沒有留言:
張貼留言