Week08
第一個小程式
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;//-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 draSw(){ x += vx; y += vy; vy+=0.98;///重力加速度 if(y>350){//利用if判斷,看有沒有到地板 y=350位置 y=350; vy = -vy*0.5;//*0.5耗損能量,越彈越小 } 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); // blue MarioX += vx; fill(255, 0, 0); ellipse(MarioX, MarioY, 15, 25); fill(229, 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); // blue MarioX += vx; MarioY += vy; fill(255, 0, 0); ellipse(MarioX, MarioY, 15, 25); fill(229, 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); // blue MarioX += vx; if(flying){ MarioY += vy; vy +=0.89; if(MarioY >= 250){ MarioY = 250; flying = false; } } fill(255, 0, 0); ellipse(MarioX, MarioY, 15, 25); fill(229, 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 keyPressed() { if (keyCode == RIGHT) vx=2; if (keyCode == LEFT) vx=-2; if (keyCode == UP && flying == false) { vy=-20; flying = true; } }第七個小程式新增小盒子可以跳void setup() { size(400, 400); } float MarioX=50, MarioY=250, vx=0, vy=0; void draw() { background(108, 137, 255); // blue MarioX += vx; if(flying){ MarioY += vy; vy +=0.89; if(MarioY >= 250){ MarioY = 250; flying = false; } } fill(255, 0, 0); ellipse(MarioX, MarioY, 15, 25); fill(229, 119, 42); rect(0, 260, 400, 150); fill(229, 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); // blue MarioX += vx; if(flying){ MarioY += vy; vy +=0.89; if(MarioY >= 250){ MarioY = 250; flying = false; } } fill(255, 0, 0); ellipse(MarioX, MarioY, 15, 25); fill(229, 119, 42); rect(0, 260, 400, 150); fill(229, 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(229,119,42); rect(0,260,400,150); fill(229,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; 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;///vx,vy剛開始速度=0 void draw(){ background(108,137,255); marioX += vx; if(flying){//如果在飛行 marioY += vy;///Y方向位置會改變 vy += 0.98;////重力加速度 if(marioY >= 250){//碰到地板 marioY = 250;//站在地上 flying = false;///不再飛行 } } fill(255,0,0); ellipse( marioX, marioY, 15, 20);///馬力歐本人 fill(229,119,42); rect(0,260,400,150); drawAndTestBox(200,150,20,20); drawAndTestBox(100,150,20,20);///多加一個方塊 drawAndTestBox(300,150,20,20);///多加一個方塊 } boolean leaveBox(int x,int y,int w,int h){///離開box if (x-7>marioX || marioX>x+w+7 )return true; else return false; } 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 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; ///碰到方塊的下邊界 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; stand_box=false;///現在兩個變數都要處理 } } void keyReleased(){ if(keyCode==LEFT || keyCode==RIGHT) vx=0; }
沒有留言:
張貼留言