2015-09-02 109 views
1

我試圖讓這個遊戲就像泡沫射擊遊戲, 我想退出遊戲時,所有的水果都被刪除,但我不知道怎麼做?! 我排序我的水果陣列,但無法找到我怎麼知道什麼時候所有的水果被刪除! 謝謝,謝謝!水果射手遊戲試圖結束

for (int k = 0; k < fruits.length; k++) { 
     for (int j = 0; j < fruits[k].length; j++) { 
      if (fruits[k][j] == null || fruits[19][19] == null) {     

       continue; 

      } 

      if (fruits[k][j].getLocationX() > fruits[19][19].getLocationX() + fruits[19][19].getWidth() 
        || fruits[k][j].getLocationX() + fruits[k][j].getWidth() < fruits[19][19].getLocationX() 
        || fruits[k][j].getLocationY() > fruits[19][19].getLocationY() + fruits[19][19].getWidth() 
        || fruits[k][j].getLocationY() + fruits[k][j].getWidth() < fruits[19][19].getLocationY()) { 
       // No colloision 
       continue; 
      } 

      // Not counting each other 
      if (!(k == 19 && j == 19)) { 
       // Törmäys 
       fruits[19][19].setSpeedX(0); 
       fruits[19][19].setSpeedY(0); 

       // collision same fruits 

       if (fruits[k][j].getImage() == fruits[19][19].getImage()) { 

        removeFruits(k, j, fruits[19][19].getImage()); 
        collision = true; 

        removeSeparate(); 

       } 
       else if(isInBounds(k + 1, j) && fruits[k + 1][j] != null && fruits[k + 1][j].getImage() == fruits[19][19].getImage()){ 
        removeFruits(k + 1, j, fruits[19][19].getImage()); 
        collision = true; 
        removeSeparate(); 

       } 
       else if(isInBounds(k - 1, j) && fruits[k - 1][j] != null && fruits[k - 1][j].getImage() == fruits[19][19].getImage()){ 
        removeFruits(k - 1, j, fruits[19][19].getImage()); 
        collision = true; 
        removeSeparate(); 
       } 
       //     // adding the fruits 
       else { 
        collisionX = k; 
        collisionY = j; 
       } 

      } 

     } 
    } 

    if (collision) { 
     fruits[19][19] = null; 

    } 


    else if (collisionX != -1 && collisionY != -1) { 

     fruits[collisionX][collisionY + 1] = fruits[19][19]; 
     fruits[19][19] = null; 

     fruits[collisionX][collisionY + 1].setPosX(collisionX); 
     fruits[collisionX][collisionY + 1].setPosY(collisionY + 1); 
     fruits[collisionX][collisionY + 1].setLocationX(fruits[collisionX][collisionY].getLocationX()); 
     fruits[collisionX][collisionY + 1].setLocationY(fruits[collisionX][collisionY].getLocationY()+fruits[collisionX][collisionY].getWidth()); 
    } 

    if (fruits[19][19] != null && fruits[19][19].getLocationY() < 0) { 
     int x = fruits[19][19].getLocationX()/fruits[19][19].getWidth(); 
     fruits[19][19].setLocationY(0); 
     fruits[19][19].setLocationX(x * fruits[19][19].getWidth()); 
     fruits[19][19].setWidth(50); 
     fruits[19][19].setSpeedX(0); 
     fruits[19][19].setSpeedY(0); 
     fruits[x][0] = fruits[19][19]; 
     fruits[x][0].setPosX(x); 
     fruits[x][0].setPosY(0); 
     fruits[19][19] = null; 

     if (isInBounds(x - 1 , 0) && fruits[x - 1][0] != null && fruits[x - 1][0].getImage() == fruits[x][0].getImage()) { 
      removeFruits(x - 1, 0, fruits[x][0].getImage()); 

     } 
     if (isInBounds(x + 1 , 0) && fruits[x + 1][0] != null && fruits[x + 1][0].getImage() == fruits[x][0].getImage()) { 
      removeFruits(x + 1, 0, fruits[x][0].getImage()); 

     } 

    } 

} 

回答

1

的代碼是混亂的,所以我不能完全肯定的你實際上是在做什麼。我將假設數組fruits包含Fruit的實例。鑑於此,我認爲兩種可能性:

  1. 如果從陣列fruits去除水果,你可以檢查當數組爲空
  2. 如果不從數組fruits取出果實,我會有一個減少的水果的計數器,每次刪除一個都會減少。

如果您向我提供removeFruit的代碼和更多關於正在使用的數據結構的信息,我可以給你一個更好的答案。

編輯: 是的,如果你要以這種方式去除水果,你必須去選擇2.只需保留一個水果櫃檯,每次減少水果。