2015-02-10 2 views
0

Я делаю игру с использованием Java. Я начинающий программист. Это фантастическая RPG-игра. Игра идет, и я собираюсь взять систему инвентаря. Есть владельцы магазинов, и у этих владельцев будет ограниченный инвентарь. Я все еще изучаю управление памятью и потребление, поэтому мой вопрос таков.Лучший способ сохранить общее количество в игре

Если Лорел является владельцем магазина, будет наиболее эффективным способом, чтобы следить за 10 зелий Лорел быть что-то вроде

static int laurelInventory = 10; 

А потом, когда герой покупает зелье было бы просто:

laurelInventory = laurelInventory - qtyPurchased; 

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

Также +1 за любые дополнительные жвачных на управление памятью

+0

Хороший вопрос, но сначала прочитайте об Инъекции Зависимости и прочитайте о таких фреймворках, как Springframework, Guice и т. Д. – MariuszS

+1

@MariuszS Действительно? Для начинающего программиста? – GriffeyDog

+2

Я думаю, что вопрос намного более общий - знаете ли вы о создании объектов? http://docs.oracle.com/javase/tutorial/java/concepts/object.html –

ответ

3

С Java и другими объектно-ориентированными языками вы хотите создавать объекты для различных «вещей» в своем домене. Поэтому вместо статической переменной у вас, вероятно, будет класс Store с экземплярами. Например.

public class Store { 

    // In real life, probably per-item, but keeping it simple here. 
    private int inventoryLevel; 

    public int getInventoryLevel() { return inventoryLevel; } 

    public void setInventoryLevel(int level) { 
     this.inventoryLevel = level; 
    } 

    public void increaseInventoryLevelBy(int amount) { 
     this.inventoryLevel += amount; 
    } 

    public void decreaseInventoryLevelBy(int amount) { 
     this.inventoryLevel -= amount; 
    } 
} 

Затем установите магазин:

Store laurelStore = new Store(); 
laurelStore.setInventoryLevel(500); 

Когда кто-то хочет что-то купить:

laurelStore.decreaseInventoryLevelBy(numPurchased); 

т.д.

Есть веские причины делать вещи таким образом (в отличие от использования статических переменных), но это большая дискуссия, поэтому вам будет полезно прочитать информацию об объекте - ориентированное программирование, чтобы понять эти причины. Удачи. Bro.

+2

Важно отметить, что статическое отслеживание для Laurel не имеет смысла, поскольку Боб Хранитель не должен знать, знать или знать инвентарь Лорел. Тот факт, что Боб мог получить доступ к инвентарю Лореля и манипулировать им, статично ужасен. – Compass

+2

Отлично. Это имеет смысл. –

+1

Основная причина, по которой это имеет смысл, заключается в том, что * теперь у вас может быть более одного магазина без копирования всего кода магазина *, кстати. – immibis

0

Создать класс ShopOwner, который будет иметь запас переменную с IncrementInventory и DecrementInventory операций. Затем вы можете создать этот класс в качестве лавра. Тем не менее, я советую вам прочитать об объектно-ориентированном проектировании программного обеспечения. Посмотрите на Design Patterns.

Смежные вопросы