我试图让这个游戏像泡泡射击游戏一样, 当所有水果都被移除时,我试图退出游戏,但我不知道如何退出?! 我将水果按数组排序,但找不到如何知道所有水果何时被移除! 谢谢,请帮忙!!
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
的实例。鉴于此,我看到两种可能性:
- 如果从数组
fruits
中删除水果,则只需检查数组何时为空即可 - 如果您不从数组
fruits
中删除水果,我会得到一个剩余水果的计数器,每次删除一个水果时,该计数器都会减少。
如果您向我提供 removeFruit
的代码以及有关所使用的数据结构的更多信息,我可能会给您更好的答案。
编辑: 是的,如果您以这种方式去除水果,则必须采用选项 2。只需保留剩余水果的计数器并每次减少它。
关于java - 水果射击游戏试图结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358074/