java - 减少 Java 游戏中碰撞方法的数量

标签 java awt collision graphics2d java-2d

我正在用java制作一个简单的游戏,我有很多方法来测试两个对象是否碰撞。对象包括人、敌人、箭头、墙壁、硬币等。我有很多方法可以计算可能发生的每种类型的碰撞,它们看起来像这样:

    public boolean collide(Arrow a, Enemy b)
    {
        Rectangle a1 = a.getBounds();
        Rectangle b1 = b.getBounds();
        if(a1.intersects(b1)) return true;
        else return false;
    }

有没有办法创建一个通用方法?我尝试使用对象 a 和对象 b 作为参数,但编译器提示它找不到对象的 getBounds() 。

最佳答案

你可以这样做:

public boolean collide(HasBounds a, HasBounds b){...

使用接口(interface):

public interface HasBounds{
  Rectangle getBounds();
}

您应该在对象上定义ArrowEnemy等...(您可能已经有适合于此的对象层次结构)。

关于java - 减少 Java 游戏中碰撞方法的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15312820/

相关文章:

java - 如何在另一个类中访问一个类的变量而不将它们设为静态?

java - 找到 64 字节数组的所有排列?

java - 确定可用的 Vaadin 屏幕空间和 GridLayout

javascript - Javascript 中的碰撞处理——粒子卡住

c++ - 在 box2d 中实现 "begin contact"

java - 使用作用域 bean 来处理 AbstractRoutingDataSource

java - Android,ListView 显示与 ArrayList 相同的数据?

java - 如何在android中添加 'java.awt.geom'类?

java - 在基于 Java 的记事本中停用记事本中的 "Undo"之类的 MenuItem

java - 本例对HashMap哈希算法的解释