使用Java将项目添加到我的库存

时间:2016-04-20 19:06:47

标签: java

我正在JavaFX上制作一个基于文本的游戏,在我点击树后,我想获得Oak日志。 我已经建立了库存,并且我已经在其中放置了默认项目,例如水,面包等。 我正在尝试将我的Oak日志添加到我的库存中,但没有任何工作。

以下是我的代码的一部分:

Item ItemList[] = {new Bread(), new OakLog()};
Optional<ButtonType> result = alert.showAndWait();
            if(result.get() == buttonTypeOak) {
                woodcuttingXP = woodcuttingXP + oakXP;
                dialogue.appendText("You swing at an Oak tree. + " + oakXP + "XP.\n");
                dialogue.appendText("You gathered 1 log.\n");
                mainCharacter.getInventory().add(new OakLog());
            }

这是我的物品类:

package game;

public class Item {
    private String name;
    private int weight;
    private int quantity;
    private int value;
    private String description;

public Item(String name, int value, String description) {
    this.name = name;
    this.value = value;
    this.description = description;
    }

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getWeight() {
    return weight;
}

public void setWeight(int weight) {
    this.weight = weight;
}

public int getQuantity() {
    return quantity;
}

public void setQuantity(int quantity) {
    this.quantity = quantity;
}

public int getValue() {
    return value;
}

public void setValue(int value) {
    this.value = value;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String toString() {
    return getName();
}
}

最后,这是我的角色类:

package game;
import java.util.ArrayList;

import beverages.Water;
import items.OakLog;
import rawFood.Bread;

public class Character {
    private String name;
    private int hydrationLevel;
    private int healthLevel;
    private int hungerLevel;
    private int woodcuttingLevel;

    public int getWoodcuttingLevel() {
        return woodcuttingLevel;
    }

    public void setWoodcuttingLevel(int woodcuttingLevel) {
        this.woodcuttingLevel = woodcuttingLevel;
    }

    public int getHungerLevel() {
        return hungerLevel;
    }

    public void setHungerLevel(int hungerLevel) {
        this.hungerLevel = hungerLevel;
    }

    private ArrayList<Item> inventory = new ArrayList<Item>();

    public ArrayList<Item> getInventory() {
        return inventory;
    }

    public void setInventory(ArrayList<Item> inventory) {
        this.inventory = inventory;
    }

    //creates a person with two basic items
    public Character(String name){
        this.name = name;
        this.hydrationLevel = 100;
        this.healthLevel = 100; 
        this.hungerLevel = 100;
        this.woodcuttingLevel = 1;
        addToInventory (new Bread());
        addToInventory (new OakLog());
        addToInventory (new Water());
}

    //GETTERS AND SETTERS
    public String getName() {
        return name;
    }

    public int getHydrationLevel() {
        return hydrationLevel;
    }

    public void setHydrationLevel(int hydrationLevel) {
        this.hydrationLevel = hydrationLevel;
    }

    public int getHealthLevel() {
        return healthLevel;
    }

    public void setHealthLevel(int healthLevel) {
        this.healthLevel = healthLevel;
    }
    //END GETTERS AND SETTERS

    /*Method Name: eat()
     *Method Inputs: a piece of food 
     *Method Purpose: Will allow the user to eat food
     */

    public Item getItemFromInventory(int index){
        Item item = inventory.get(index);
        return item;
    }

    public void addToInventory(Item item){
        if(inventory.contains(item)){
            item.setQuantity(item.getQuantity()+1);
        }
        else{
            item.setQuantity(1);
            inventory.add(item);
        }
    }

    public String toString(){
        return "Character Stats:\nName:" +  getName() + "\nHydration: " + getHydrationLevel() + "\nHealth: " + getHealthLevel() + "\nWoodcutting: " + getWoodcuttingLevel(); 
    }

}

1 个答案:

答案 0 :(得分:0)

在您的代码中,您有:

if(inventory.contains(item)){
    item.setQuantity(item.getQuantity()+1);
}

这只是更新方法中局部变量item的数量,而不是库存中的项目。