基本上我正在创建一个游戏,你点击掉落物体,EG饼干,我需要知道如何检查并查看某个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)*/
}
如果你不明白这里有一张图片来展示我的需要......
答案 0 :(得分:2)
为了避免在每次点击时检查120个不同项目的坐标,请让FallingObject[]
内的每个元素都知道三件事:
ClickerGame
为此,您需要将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
内调用此方法,只需引用&#39; master&#39;变量(您应该将其保存为类中的全局变量。
答案 1 :(得分:1)
如果FallingObject[]
数组中的每个元素与点击时的鼠标指针坐标相交,则必须检查它们。
您可以为每个Cookie实施简单的矩形测试或使用圆圈,如下所述: