保持游戏总计数的最佳方法

时间:2015-02-10 21:21:28

标签: java static

我正在使用Java制作游戏。我是初学程序员。这是一款类似游戏的幻想RPG游戏。游戏即将到来,我即将进行库存系统。有店主,这些业主将有限的库存。我还在学习内存管理和消费,所以我的问题如下。

如果劳雷尔是店主,那么追踪劳雷尔10种药水的最有效方式就是

 static int laurelInventory = 10;

然后当Hero购买药水时,它就是:

laurelInventory = laurelInventory - qtyPurchased;

我想要了解的是,我会经常使用静态遇到麻烦,或者有更好的方法来存储运行计数和总计。这使我对我来说更加清洁,而不是担心我创建和管理该实例的实例。

对于内存管理的任何其他反刍,也是+1

2 个答案:

答案 0 :(得分:3)

使用Java和其他面向对象的语言,您希望为各种"事物创建对象。在您的域中。因此,您可能拥有一个包含实例的Store类,而不是静态变量。 E.g。

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);

有充分的理由以这种方式做事(而不是使用静态变量),但这是一个很大的讨论,因此您会发现阅读面向对象编程以理解这些原因很有用。祝好运。兄弟。

答案 1 :(得分:0)

创建一个ShopOwner类,它将具有包含IncrementInventory和DecrementInventory操作的stock变量。然后,您可以将该类设置为月桂树。但是,我建议你阅读有关面向对象的软件设计。看看设计模式。