2022年1月3日 星期一

鴨力山大week12(期末作品第二步)


 新進展!!!可以成功疊加豆腐,女孩也可以成功站在豆腐上
下次要做出分數跟死亡畫面

以下是這周的程式碼

PImage img1;
float x=203,y=370,vx=0,vy=0;//女孩的座標
boolean jumping=false;
float []tofuX=new float[100];
float []tofuVX=new float[100];
int n=1;//豆腐數量
int state=0;//0是不會動,1是豆腐移動,2是豆腐停止且往下降
int tofuH=0;
int t=0;

void setup(){
  size(400,600);
  img1=loadImage("bgg.JPG");
  tofuX[0]=140;//豆腐剛開始的位子
  generateTofu();//做出新豆腐
}
void draw(){
  image(img1,0,0,400,600);
  for(int i=0;i<n;i++)
  {
    rect(tofuX[i],400-i*65+tofuH,125,65);
  }
  if(state==1){
    if(t>0){
      tofuH++;t--;
    }else{
      state=0;
      
    }
  }
  tofuX[n-1]+=tofuVX[n-1];
  ellipse(x,y+tofuH,60,60);
  if(jumping){
    if(vy>0 && tofuX[n-1]<x && x<tofuX[n-1]+125 && y+33<400-(n-1)*65 && y+33+vy>400-(n-1)*65){///設定出一個範圍,讓女孩站在豆腐上面
      jumping=false; vy=0; y=400-(n-1)*65-30;
      screenroll();
      generateTofu();
    }else{
      y+=vy;
      vy+=0.98;//重力
    }
  }
}
void mousePressed(){
  if(!jumping){  
    jumping=true;
    vy=-24;//跳躍高度的設定
  }
}
void keyPressed(){
  generateTofu();
}
void generateTofu(){///做出新的豆腐的函式
  int dir=int(random(2));//0=左邊,1=右邊
  n++;
  if(dir==0){
    tofuX[n-1]=400;
    tofuVX[n-1]=-2;//移動的速度
  }else{
    tofuX[n-1]=-125;
    tofuVX[n-1]=2;//移動的速度
  }
}
void screenroll(){///整個畫面滾動的函式
  state= (state+1)%3;
  if(state==0){
   
  }else if(state==1){
    t=65;
  }
}

沒有留言:

張貼留言