水果射击游戏试图结束

时间:2015-09-02 16:12:28

标签: java arrays

我试图让这个游戏就像泡泡射手一样 当所有的水果都被删除但是我无法弄清楚它是怎么回事的时候我试图退出游戏?! 我把我的水果分成阵列,但是找不到所有水果的时候我都不知道! 谢谢谢谢!!

    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 个答案:

答案 0 :(得分:1)

代码很混乱,所以我不完全确定你在做什么。我将假设数组fruits包含Fruit的实例。鉴于此,我看到两种可能性:

  1. 如果从数组fruits中删除水果,则可以检查数组何时为空
  2. 如果你没有从数组fruits中删除水果,我会有一个剩下的水果计数器,每次你删除它时都会减少。
  3. 如果您向我提供removeFruit的代码以及有关正在使用的数据结构的更多信息,我可能会给您更好的答案。

    编辑: 是的,如果你以这种方式去掉水果,你必须选择2。只需保留一个水果计数器并每次减少它。