gpt4 book ai didi

java - 如何检查我是否刚刚单击了数组中的某个对象?

转载 作者:行者123 更新时间:2023-12-01 23:04:28 25 4
gpt4 key购买 nike

基本上我正在创建一个游戏,你可以点击掉落的物体,例如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)*/
}

如果您不明白,这里有一张图片来演示我需要什么...... And sorry about the terrible drawing

最佳答案

为了避免每次点击时检查 120 个不同项目的坐标,请让 FallingObject[] 内的每个元素了解三件事:

  1. 自己的影响范围(参见 sn00fy 的回答)
  2. 包含类(在本例中可能是 ClickerGame
  3. 它在数组中的位置(一个整数)

为此,您需要将 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”变量(您可能应该将其保存为类中的全局变量。

关于java - 如何检查我是否刚刚单击了数组中的某个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com