2022年1月17日 星期一

豆腐女孩最終日

 

完成遊戲畫面
程式碼:

PImage img1,img2;
PImage[] img3 = new PImage[14];
float x=155,y=300,vx=0,vy=0;//女孩
boolean jumping=false;
boolean alive=true;
float []tofuX=new float[100];
float []tofuVX=new float[100];
int n=1;//豆腐數量
int state=0;
int tofuH=0;
int t=0;
PFont timberman;
void setup(){
  size(400,600);
  
  img1=loadImage("bgg.JPG");
  img2=loadImage("111.png");
  
  img3[0]  = loadImage("1111.gif");
  img3[1]  = loadImage("2222.gif");
  img3[2]  = loadImage("3333.gif");
  img3[3]  = loadImage("4444.gif");
  img3[4]  = loadImage("5555.gif");
  img3[5]  = loadImage("6666.gif");
  img3[6]  = loadImage("7777.gif");
  img3[7]  = loadImage("8888.gif");
  img3[8]  = loadImage("9999.gif");
  img3[9]  = loadImage("1010.gif");
  img3[10]  = loadImage("1011.gif");
  img3[11]  = loadImage("1012.gif");
  img3[12]  = loadImage("1013.gif");
  img3[13]  = loadImage("1014.gif");
  tofuX[0]=140;//豆腐剛開始的位子
  generateTofu();
}
int k=0;
void draw(){
  image(img1,0,0,400,600);
  timberman = createFont("Pixelony.ttf", 40);//遊戲字體
  text("Score:"+(n-1),130,100);
  textFont(timberman);
  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;
      
    }
  }
  
  image(img2,x,y+tofuH,100,100);
  if(jumping){
    if(vy>0 && tofuX[n-1]<x+70 && x<tofuX[n-1]+95 && y+100<400-(n-1)*65 && y+100+vy>400-(n-1)*65){
      jumping=false; vy=0; y=400-(n-1)*65-100;
      screenroll();
      generateTofu();
    }else{
      y+=vy;
      vy+=0.98;
    }
  }
  tofuX[n-1]+=tofuVX[n-1];
  
  if(!jumping && tofuVX[n-1]!=0 && tofuX[n-1]<x+75 && x<tofuX[n-1]+100){
    
    alive=false;
  }
  if(y>600)
  {
    alive=false;
  }
  if(alive==false)//死亡
  {
    image(img3[k],0,0,400,600);
    if(frameCount%6==0) k=(k+1)%14;
    timberman = createFont("Pixelony.ttf", 40);//遊戲字體
    text("Your Score:"+(n-1),70,100);
    fill(#EA2F4B);
    textFont(timberman);
  }
}

void mousePressed(){
  if(!jumping){  
    jumping=true;
    vy=-22;
  }
}

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)%2;
  if(state==0){
   
  }else if(state==1){
    t+=65;
  }
}
結束遊戲畫面的動態圖片








沒有留言:

張貼留言