基本上,我正在创建一个游戏,您单击掉落的物体(例如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”变量(您可能应该将其另存为类中的全局变量。