基本上,我正在创建一个游戏,您单击掉落的物体(例如Cookie),我需要知道如何检查并查看某个Cookie是否已按下,以便它可以消失,但是问题在于它位于数组中。

这是我的一些代码:
输入类别...

public class Input implements MouseListener, MouseMotionListener{

@Override
public void mousePressed(MouseEvent e) {
    if(e.getSource().equals(MainGame.CG)){
        if(MainGame.MG.inGame){
            //There is actually something else here but its classified (haha sorry about that)
            if(e.getPoint().x > /*I NEED SOMETHING HERE*/){
                                    //tells you if the object has been pressed
                MainGame.CG.cookieClicked = true; //CG = ClickerGame
            }

        }
    }
}
}


类与数组...

public class ClickerGame extends JPanel{
    public int amount;
    public FallingObject[] fo = new FallingObject[120]; //THE ARRAY I'M HAVING TROUBLES WITH


     /*THE REST IS A SECRET (SORRY ABOUT THAT)*/
}


如果您不明白,这里是一张照片来展示我的需求...

最佳答案

为了避免每次单击时都要检查120个不同项目的坐标,请使FallingObject[]中的每个元素都知道三件事:


自己的影响范围(请参见sn00fy的答案)
包含的类(在这种情况下,可能是ClickerGame
它在数组中的位置(一个int)


为此,您需要将您的FallingObject构造函数更改为如下所示:

public void FallingObject(ClickerGame master, int index); //add whatever else is needed for Falling Object.


然后,您可以按以下方式实例化数组。

for(int i = 0; i < 120; i++) {
     fo[i] = new FallingObject(this, i ); //add anything else needed for the constructor
}


然后,每个FallingObject负责其自身的状态,并且在单击时能够向ClickerGame实例报告。现在,您需要的是ClickerGame中的每个FallingObject都可以调用的方法。

public void clickedObj(int index) {
FallingObject temp = null;
     if(index >= 0 && index < 120) {
          temp = fo[index];
          //Do stuff with temp :)
     }
}


要从FallingObject内部调用此方法,只需引用“ master”变量(您可能应该将其另存为类中的全局变量。

10-08 13:07