2023年11月2日 星期四

mei's Week08

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

沒有留言:

張貼留言