以下是有使用到的圖片
成品的影片
以下是程式碼
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");///這些圖片是不斷讀取才會有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;
}
}
沒有留言:
張貼留言