我正在开发一个基于文本的冒险游戏项目。它包括带有物品的房间以及从一个房间到另一个房间的导航。有一个叫做Item的类,这个叫做Room的大类。除了我的addItem方法之外,我的所有方法都能正常工作。它应该将物品放入空房间或更换房间的物品(如果它已经存在)。我可以在创建新房间时将项目放入房间,并且我的removeItem方法可以正常工作,但addItem既不适用于空房间也不适用于整个房间。我错过了某种"房间"变量(我的教授没有提到这样的东西)或者我的项目变量有问题吗?以下是Room Room的完整代码:
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;
}
}
答案 0 :(得分:2)
更改i = item;
item = i;
答案 1 :(得分:2)
public void addItem (Item i){
item = i;
}
是这个错误吗?
希望这有帮助。
菲尔
答案 2 :(得分:0)
正在发生的事情是,您提供i
参数,对item
的引用,实例变量,而不是相反。该方法结束,i
不再存在,没有任何变化。