2018年10月11日 星期四

Week05 呆江的筆記

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

沒有留言:

張貼留言