Как управлять массивом объектов? - PullRequest
0 голосов
/ 25 апреля 2019

Для проекта я пишу базовую RPG и наткнулся на проблему, которую не могу исправить. У меня нет опыта работы с Java, так что это моя учебная площадка. Для моего игрока я хочу сделать инвентарь, предположительно, двумерный массив и массив оборудования (одномерный, 8 значений). У меня есть конструкторы для элементов в отдельных классах, которые я могу вызывать из своей функции Main, вопрос в том, как я могу использовать что-то вроде геттеров и сеттеров для записи сгенерированного объекта в эти массивы? У меня нет кода для этого, потому что я понятия не имею, как это сделать. Тем не менее, здесь есть конструктор предметов и массив моего оборудования:

    public Amulet(String itemName,int itemPrice,int itemLevel,int bonusType,double bonusMagn) {
            super(itemName,itemPrice,itemLevel,false,false,false,false,false,false,false,true,bonusType,bonusMagn);
            this.itemName = itemName;
            this.itemPrice = itemPrice;
            this.itemLevel = itemLevel;
            this.bonusType = bonusType;
            this.bonusMagn = bonusMagn;
        }
    PlayerEquipment[] equipmentArray = new PlayerEquipment[8];

// The many booleans the canWearinSlotX values defined in the super.

Спасибо за вашу помощь!

EDIT: Спасибо за ваши комментарии! Я уверен, что это выглядит ужасно для вас, но я сделал это, используя очень базовые знания. Я не знаю о EnumSet и как он работает, поэтому я смотрю его. То же самое со строителями. Для меня начиная с изучения 2-3 конструкторов параметров в классе, это был логичный шаг, чтобы расширить его таким образом.

Супер для этого конкретного предмета:

public class ItemMaster {
protected String itemName;
protected int itemPrice;
protected int itemLevel;

protected ItemMaster(String itemName,int itemPrice,int itemLevel) {
}

}

class ArmourMaster extends ItemMaster {
//Slot 1 Head,2 Chest,3 Legs,4 Foot,5 Hands,6 LeftRing,7 RightRing,8 Amulet
    protected boolean canWear1;
    protected boolean canWear2;
    protected boolean canWear3;
    protected boolean canWear4;
    protected boolean canWear5;
    protected boolean canWear6;
    protected boolean canWear7;
    protected boolean canWear8;

protected ArmourMaster(String itemName,int itemPrice,int itemLevel,boolean canWear1,boolean canWear2,boolean canWear3,boolean canWear4,boolean canWear5,boolean canWear6,boolean canWear7,boolean canWear8) {
    super(itemName,itemPrice,itemLevel);
}

}

public class JewelryMaster extends ArmourMaster {
protected int bonusType;
protected double bonusMagn;

public JewelryMaster(String itemName,int itemPrice,int itemLevel,boolean canWear1,boolean canWear2,boolean canWear3,boolean canWear4,
        boolean canWear5,boolean canWear6,boolean canWear7,boolean canWear8,int bonusType,double bonusMagn) {
    super(itemName,itemPrice,itemLevel,canWear1,canWear2,canWear3,canWear4,canWear5,canWear6,canWear7,canWear8);
}

}

Вы видите, что я собираюсь носить доспехи, а также украшения в определенном слоте, и у драгоценностей будут только бонусы статов, а бонус защиты только доспехов. Я хочу, чтобы так было проще.

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