我正在制作文字冒险游戏,我有一种方法可以在游戏中的某些房间添加物品。我两次意外地宣布同样的方法。
ArrayList<Item> items = player.getCurrentposition().getItems();
if(items.size() > 0)
{
for (Item item : player.getCurrentposition().getItems())
{}
io.put("\n\nYou've stumbled upon an item! Do you want to pick it up?\nInput 0 if room contains 1 item, "
+ "and if the room contains 2 items input either 0 or 1, depending on which you wish to pick up" + player.getCurrentposition().getItems());
//the first method used to loop through the found items, int pickUp = io.getInteger(0, player.getCurrentposition().getItems().size());
player.getInv().add(player.getCurrentposition().getItems().get(pickUp));
System.out.println("You picked up the following item(s): " + player.getCurrentposition().getItems());
ArrayList<Item> it = player.getCurrentposition().getItems();
for (Item object : it)
{
player.addToInv(object);
if(object instanceof Weapon)
{
((Weapon)object).addToPlayerDamage(player);
}
else if(object instanceof Potion)
{
((Potion)object).applyPotion(player);
}
}
//System.out.println(player.getInv().size()); <-- used to check
player.getCurrentposition().getItems().remove(pickUp);
io.put("here is some stuff..:\n");
for (Item item : items)
{
io.put(item.getName()+"\n");
io.put("\n\nYou've stumbled upon an item! Do you want to pick it up?\nInput 0 if room contains 1 item, "
+ "and if the room contains 2 items input either 0 or 1, depending on which you wish to pick up" + player.getCurrentposition().getItems());
}
ArrayList<String> options = new ArrayList();
options.add("Nothing");
for (int i = 0; i < items.size(); i++) {
options.add(i+1+ ": " + items.get(i).getName());
}
options.add("All");
int pickUp = io.select("Here are the options you can chose from +", options, "");
//here is the second int pickUp, which is used to select the items, that the user wants and add them to the users inventory.
if(pickUp == 0){
//nothing
} else if(pickUp == options.size()-1){
//all
} else {
player.getInv().add(player.getCurrentposition().getItems().get(pickUp - 1));
player.getCurrentposition().getItems().remove(pickUp - 1);
}
}
int pickUp被声明两次,但我不知道我是否可以将pickUp重命名为其他内容。我第一次宣布pickUp是为了让玩家拿起一个项目,第二次我会让olayer选择是否要收集该项目。
我可以将第二个int PickUp重命名为其他内容,例如choosePickUp,并且在没有错误的情况下具有相同的结果。
答案 0 :(得分:0)
它们都是Integer类型。为什么不尝试在第二次使用它时不将其声明为整数。除非您存储初始值并在需要时同时重新计算新值。
第二个选项是如果你需要两个,那么重命名第二个变量不应该影响太多。第一个变量似乎取项目及其大小;第二个为您提供选项并存储它。我没有看到基于这段代码重命名第二个变量的问题。如果您确实重命名,则确保以下if语句也被更改。
编辑: 是的,当你再次阅读你的代码时,我认为你应该重命名你的第二个变量并称之为pickupItem。我假设0表示他忽略了该项目,第二个如果声明我不知道,第三个if语句他拿起物品并将其分配到库存中。如果你可以清理第二个if语句的内容,那么我可以帮助更多。