java - 水果射击游戏试图结束

标签 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());

        }

    }

}

最佳答案

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

  1. 如果从数组 fruits 中删除水果,则只需检查数组何时为空即可
  2. 如果您不从数组 fruits 中删除水果,我会得到一个剩余水果的计数器,每次删除一个水果时,该计数器都会减少。

如果您向我提供 removeFruit 的代码以及有关所使用的数据结构的更多信息,我可能会给您更好的答案。

编辑: 是的,如果您以这种方式去除水果,则必须采用选项 2。只需保留剩余水果的计数器并每次减少它。

关于java - 水果射击游戏试图结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358074/

相关文章:

java - 如何在 Spring Boot 中将 TTL 附加到 Redis 缓存中的每个条目

java - 使用逗号格式化 JTable 列单元格中的整数

java - 为什么在 Hibernate 中使用 org.hibernate.TransactionException 并避免

javascript - 通过输入条件禁用/启用按钮 [AngularJS]

arrays - 在 Perl 中对 @_ 数组使用移位函数的问题

java - 修改java中的数组

java - java中的可变字节数组

java - 如何以编程方式在 Android 中锁定屏幕?

java - 创建记录器时如何避免重复自己?

PHP递归取消设置数组键如果匹配