Как сделать Arraylist доступным для многих классов? - PullRequest
4 голосов
/ 04 июня 2011

Я делаю вертикальный шутер и у меня возникают проблемы с обнаружением столкновений. Столкновения обнаруживаются с помощью метода Rectangle «пересечь», но для отслеживания всего, что может столкнуться, мне нужны Arraylists для отслеживания всех пуль и вражеских кораблей. Класс Enemy и Player порождают Bullets (которые также имеют собственный класс), поэтому я хотел бы иметь 2 разных Arraylists в моем классе GameView (который контролирует игровую графику и, надеюсь, столкновения, когда я здесь закончу).

Каков наиболее эффективный способ добавления маркеров к их соответствующим спискам ArrayLists после их появления?

Класс пули:

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 ]

2 голосов
/ 04 июня 2011

Вы можете иметь класс GameState, у которого есть массив списков местоположений, и передавать экземпляр GameState в качестве аргумента конструктору производных классов Location.

1 голос
/ 04 июня 2011

Как сказал Марсело, класс GameState - хорошая идея. Я бы добавил, что реализация класса GameState для реализации шаблона Singleton повысила бы безопасность и уменьшила бы подверженную ошибкам глобализацию ваших списков. (Поставил бы это как комментарий к другому ответу, но я пока не могу комментировать, извините.)

Кроме того, поскольку ваш вопрос касается эффективности порождающих пули объектов, взгляните на шаблоны Prototype и Factory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...