gpt4 book ai didi

Java:如何检查世界上是否存在某个对象的特定实例?

转载 作者:行者123 更新时间:2023-12-01 12:29:47 26 4
gpt4 key购买 nike

注意:我使用的是 Greenfoot IDE

因此,我的任务是创建一个 Balloon 项目,其中 Balloon 类的对象 float 到屏幕顶部。任何其他细节都由我决定。

所以我让我的气球通过 pop 方法弹出,该方法由另外两个方法调用。另外两个方法是 topPop(),其中如果 (getY() <= 0) 则调用 pop(),以及 hitCopter(),其中如果气球与我的直升机玩家对象相交,则调用 pop()。

这里的问题是,在我的 Act() 方法中,程序在遇到我首先调用的方法(hitCopter() 或 topPop())后崩溃,并说另一个应该为崩溃负责,因为它试图执行这两种方法,但不能执行另一种方法,因为当它不再存在于世界中时,您无法检查它是否相交或它的 getY() 。

所以我想,如果我可以在执行 topPop() 或 hitCopter() 之前检查该对象的实例是否仍然存在于世界中,那就可以解决我的问题。问题是我不知道如何做到这一点,而且我无法在网上找到有关如何明确执行此操作的答案。

我尝试通过列表来做到这一点,我的代码反射(reflect)了这一点,但我实际上不知道如何检查列表,所以我的 if 语句检查反射(reflect)了我的无知。

这是我目前的代码:

    import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
* Write a description of class Balloon here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Balloon extends Actor
{
//variable declaration
private int yAxis;
private int num;
private int size;
private int health;
private int dmg;
private int rndmSize;
private int setSize;
private Balloon thisBalloon;
public Balloon()
{
rndmSize = Greenfoot.getRandomNumber(6)+1;
rndmSize();
setSize(setSize);
num=0;
yAxis=0;
thisBalloon = this;
}
public void rndmSize()
{
if (rndmSize==1)
{
setSize = 5;
}
else if(rndmSize==2)
{
setSize = 10;
}
else if(rndmSize==3)
{
setSize = 15;
}
else if(rndmSize==4)
{
setSize = 20;
}
else if(rndmSize==5)
{
setSize = 25;
}
else
{
setSize = 30;
}
}
public void act()
{
fly();
if (getWorld().getObjects(Balloon.class) != Balloon.this)
{
topPop();
}
List<Balloon> balloon = this;
for(Actor actor : balloon)
{
if (actor instanceof balloon)
return true;
}
if (getWorld().getObjects(Balloon.class) != Balloon.this)
{
hitCopter();
}
setSize(health);
}
public void fly()
{
num++;
yAxis=getWorld().getHeight()-num;
setLocation(getX(),yAxis);
turn(1);
}
public void setSize(int size2)
{
health = size2;
this.size = size2;
dmg = size2/2;
GreenfootImage image=getImage();
image.scale(size2,size2);
}
public void topPop()
{
if(getY()<=5)
{
pop();
}
}
public void hit(int damage)
{
health-=damage;
if(health <=0)
{
getWorld().removeObject(this);
return;
}

}
public void hitCopter()
{
Helicopter copter = (Helicopter) getOneIntersectingObject(Helicopter.class);
if (copter != null)
{
copter.hit(dmg);
pop();
}
}
public int returnSize()
{
return size;
}
public void pop()
{
//popping animation

//remove the balloon
getWorld().removeObject(this);
}


}

最佳答案

您可以在 if-else block 中检查这两个事件,例如...

public void method() {
Helicopter copter = (Helicopter) getOneIntersectingObject(Helicopter.class);
if (copter != null) {
copter.hit(dmg);
pop();
} else {
topPop();
}
}

关于Java:如何检查世界上是否存在某个对象的特定实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026107/

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