如何让很多课程都可以使用Arraylist?

时间:2011-06-04 17:40:33

标签: java oop arraylist

我正在进行垂直射击游戏,我遇到了碰撞检测问题。通过矩形方法“交叉”检测碰撞,但为了跟踪可能发生碰撞的一切,我需要Arraylists跟踪所有子弹和敌舰。 Enemy和Player类都产生了Bullets(它们也有自己的类)所以我想在我的GameView类中有2个不同的Arraylists(它控制着游戏图形,当我在这里完成时会发生碰撞)。

什么是允许子弹在生成时添加到各自的ArrayLists的最有效方法?

Bullet类:

public class Bullet extends Location{
    private Fights bulletOwner;
    private int damage;
    private int velocity;

    public Bullet(Fights owner, int dmg, Rectangle loca)
    {
        super(loca);
        bulletOwner = owner;
        damage = dmg;
    }

    public Fights getOwner(){return bulletOwner;}
    public int getDamage(){return damage;}
    public int getVelocity(){return velocity;}

}

位置等级

import java.awt.Rectangle;

public class Location {
    protected Rectangle loc;

    public Location (Rectangle location)
    {
        loc = location;
    }

    public Rectangle getLocation()
    {
        return loc;
    }

    public void updateLocation(Rectangle location)
    {
        loc = location;
    }
}

2 个答案:

答案 0 :(得分:2)

你可以拥有一个具有位置的arraylist的GameState类,并将GameState实例作为参数传递给Location派生类的构造函数。

答案 1 :(得分:1)

像马塞洛一样说GameState课是个好主意。我想补充说,使GameState类实现Singleton模式可以提高安全性并减少容易出错的列表全局化。 (会把这个作为对另一个答案的评论,但我还不能发表评论,抱歉。)

此外,由于您的问题询问产生子弹对象的效率,请查看原型和工厂模式。