Week05小遊戲示範
1.接雞蛋
運作邏輯:
先建立數字圖片的陣列、還有雞蛋座標和變成分數的雞蛋的陣列
在setup()裡先設定視窗大小、讀圖片、雞蛋出現位置(隨機)與雞蛋存活(false)
在draw()之前,先建立一個變數去計算等等的成績(score)並先歸零
在draw()裡面,一開始一定要清背景(不然背景之後會很亂很醜)
並建立一個接雞蛋的方塊
使用for() loop去判斷雞蛋的存活、位移、與分數
之後使用一個變數去儲存score的值(now)
再透過for() loop去計算、顯示當前分數
在100分的時候,遊戲就會結束
程式碼:
PImage[] imgN=new PImage[10];
PImage imgegg;
float[] eggX=new float[100];
float[] eggY=new float[100];
boolean[] eggDie=new boolean[100];
void setup(){
size(800,600);
for(int i=0;i<=9;i++) imgN[i]=loadImage(i+".png");
imgegg=loadImage("egg4.png");
for(int i=0;i<100;i++){
eggX[i]=random(0,700);
eggY[i]=-random(0,2000);
eggDie[i]=false;
}
}
int score=0;
void draw(){
background(20,20,50);
fill(250,250,250); rect(mouseX-55,mouseY-15,100,30);
for(int i=0;i<100;i++){
if(eggDie[i]) continue;
image(imgegg,eggX[i],eggY[i],90,120);
eggY[i]+=5;
if(eggY[i]>700) eggY[i]=-2000+600;
if(dist(mouseX,mouseY,eggX[i],eggY[i])<100){
eggDie[i]=true;
score+=10;
}
}
int now=score;
for(int i=0;i<5;i++){
image(imgN[now%10],800-i*50,20,50,100);
now/=10;
}
}
2.接雞蛋改良版(可以一直執行)
運作邏輯:
沿用上面的程式邏輯,但如果eggDie[i]是true的時候,會重置X、Y的位置,並在把eggDie[i]的值更改成false程式碼:
PImage[] imgN=new PImage[10];PImage imgegg;
float[] eggX=new float[100];
float[] eggY=new float[100];
boolean[] eggDie=new boolean[100];
void setup(){
size(800,600);
for(int i=0;i<=9;i++) imgN[i]=loadImage(i+".png");
imgegg=loadImage("egg4.png");
for(int i=0;i<100;i++){
eggX[i]=random(0,700);
eggY[i]=-random(0,2000);
eggDie[i]=false;
}
}
int score=0;
void draw(){
background(20,20,50);
fill(250,250,250); rect(mouseX-55,mouseY-15,100,30);
for(int i=0;i<100;i++){
image(imgegg,eggX[i],eggY[i],90,120);
eggY[i]+=5;
if(eggY[i]>700) eggY[i]=-2000+600;
if(dist(mouseX,mouseY,eggX[i],eggY[i])<100){
eggDie[i]=true;
score+=10;
}
#############################
if(eggDie[i]==true){
eggX[i]=random(0,700);
eggY[i]=-2000;
eggDie[i]=false;
}
#############################
}
int now=score;
for(int i=0;i<5;i++){
image(imgN[now%10],800-i*50,20,50,100);
now/=10;
}
}
沒有留言:
張貼留言