我试图让这个游戏就像泡泡射手一样 当所有的水果都被删除但是我无法弄清楚它是怎么回事的时候我试图退出游戏?! 我把我的水果分成阵列,但是找不到所有水果的时候我都不知道! 谢谢谢谢!!
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());
}
}
}
答案 0 :(得分:1)
代码很混乱,所以我不完全确定你在做什么。我将假设数组fruits
包含Fruit
的实例。鉴于此,我看到两种可能性:
fruits
中删除水果,则可以检查数组何时为空fruits
中删除水果,我会有一个剩下的水果计数器,每次你删除它时都会减少。如果您向我提供removeFruit
的代码以及有关正在使用的数据结构的更多信息,我可能会给您更好的答案。
编辑: 是的,如果你以这种方式去掉水果,你必须选择2。只需保留一个水果计数器并每次减少它。