Как эффективно управлять сотнями сущностей? - PullRequest
0 голосов
/ 26 сентября 2019

ОК, так что я новичок, застрял в поиске хорошего способа решения этой проблемы.Поэтому я создаю RPG игру на выживание сверху вниз на Java, используя slick2d.У меня проблема, когда дело доходит до появления предметов в игре.Каков наилучший способ управлять сотнями предметов ... Пример;У меня есть подкласс предметов под названием PickUpItems.Например, когда дерево уничтожается игроком, оно порождает PickUpItem, который является просто изображением с прямоугольником для столкновения.Что было бы лучшим способом выбрать, какой Предмет порождать, не делая сотен классов для каждого Интерактивного Предмета (Дерево, кустарник, фермерский инвентарь и т. Д.).Должен ли я иметь класс менеджера предметов?Получив имя, он будет искать текстовый файл, чтобы получить необходимые параметры и затем создать объект?

public void spawnPickUpItem (тип String, int x, int y) {PickUpItem pickUpItem = null;

    switch(type)
    {
        case"Log":
            pickUpItem = new PickUpItem(type,logImage,x,y,this);
        break;
        case"Flint":
            pickUpItem = new PickUpItem(type,flintImage,x,y,this);
        break;
        case"Rock":
            pickUpItem = new PickUpItem(type,rockImage,x,y,this);
        break;
    }

Это моя текущая попытка, которая работает, порождает необходимый элемент, но представьте себе, что я запускаюПереключите оператор с сотнями случаев, каждый предмет, который вам нужен, появляется в игре.Я уверен, что кто-то может помочь .. Спасибо

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете следовать шаблону Factory Method

Map<String, Image> imageRepository = new HashMap<>(); // to be filled

PickUpItem createItem(String type, int x, int y) {
    Image itemImage = imageRepository.getOrDefault(type, yourDefaultImg);
    return new PickUpItem(itemImage, x, y); 
}

public void spawnPickUpItem(String type, int x, int y) {
   PickUpItem pickUpItem = createItem(String type, int x, int y);
   // further logic . . .
}
...