0

テキストベースのアドベンチャー ゲーム プロジェクトに取り組んでいます。アイテムが入った部屋と、部屋から部屋への移動が含まれます。Item と呼ばれるクラスと、このより大きな Room と呼ばれるクラスがあります。addItem メソッドを除いて、すべてのメソッドは完全に機能します。空の部屋にアイテムを配置するか、部屋のアイテムが既に存在する場合はそれを置き換えます。新しい部屋を作成するときにアイテムを部屋に入れることができ、removeItem メソッドは機能しますが、addItem は空の部屋でも満室の部屋でも機能しません。ある種の「部屋」変数が不足していますか (私の教授はそのようなことについて何も言及していませんでした)、それともアイテム変数に問題がありますか? クラスルームの完全なコードは次のとおりです。

    public class Room
{
    private String roomDescription;
    private Item item;
    private HashMap <String, Room> myNeighbors;

    public Room (String pDescription){
        roomDescription = pDescription;
        item = null;
    }

    public Room (String pDescription, Item pItem){
        roomDescription = pDescription;
        item = pItem;
    }

    public String getRoomDescription(){
        return roomDescription;
    }

    public Item getItem(){
        return item;
    }

    public void addItem (Item i){
        i = item;
    }

    public boolean hasItem(){
        if(item != null){
            return true;
        }else{
            return false;
        }
    }

    public void addNeighbor (String pDirection, Room r){
        myNeighbors.put(pDirection, r);
    }

    public Room getNeighbor (String pDirection){
        return myNeighbors.get(pDirection);
    }

    public Item removeItem(){
        item = null;
        return item;
    }

    public String getLongDescription(){
        String longDescription = "You are at " + roomDescription + "You see " + item;
        return longDescription;
    }
}
4

3 に答える 3

2

i = item;のために変更item = i;

于 2012-04-04T23:50:22.580 に答える
2
public void addItem (Item i){
    item = i;
}

このエラーでしたか?

お役に立てれば。

フィル

于 2012-04-04T23:51:31.563 に答える
0

何が起こっているかというと、その逆ではなく、パラメータ、インスタンス変数iへの参照を与えているということです。itemメソッドは終了し、i存在しなくなります。何も変更されていません。

于 2012-04-04T23:56:43.587 に答える