gpt4 book ai didi

java - 如何初始化其中的类和形状属性?

转载 作者:行者123 更新时间:2023-11-30 10:26:34 27 4
gpt4 key购买 nike

我正在构建 map ,并在其上尝试添加节点,例如墙壁、摄像机、门等...现在这些都是由矩形等形状组成的,我已经完成了,但是我正在尝试重新处理它,因为我的碰撞检测算法遇到了问题,因为我可以检查形状之间的碰撞,但是当我试图告诉我形状派生自的类时,它会给我带来问题(例如,矩形门或墙)采取什么行动。

public class Door {

private int x, y;

public Door(int x, int y) {
this.x = x;
this.y = y;
}

public Door getTarget() {
Door door = new Rectangle(x, y, 30, 20);
return door;
}
}

有什么方法可以让这种类正常工作并返回一个矩形,而无需使用 getTarget() 方法?

public class Door extends Rectangle {

public double x,y;
public Rectangle door;

public Door(double x, double y) {
this.x = x;
this.y = y;
door = new Rectangle(x, y, 30, 20);
}

}

最佳答案

您的 Door 类中不需要 Rectangle 字段,您的 Door 已经扩展了 Rectangle。通过说 Door 扩展 Rectangle,这意味着 Door 是一个 Rectangle。所以如果你有这样的碰撞检查功能:

public Boolean testCollision(Rectangle first, Rectangle second) { ... }

您可以简单地将任何 Door 对象传递给此方法。

Door first = new Door()
Door second = new Door()
if (testCollision(first, second) {
// do stuff
}

如果您需要在您的testCollision 方法中区分不同的Rectangle 类型,您可以强制转换:

if (first instanceof Door) {
Door firstAsDoor = (Door)first;
}

关于java - 如何初始化其中的类和形状属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657527/

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