开关盒拾取基于文本的java游戏中的特定项目
我在用java开发一个基于文本的小型rpg时遇到了一个困难的障碍,我找不到解决方案 游戏管理器是一个简单的开关盒扫描仪,它根据我的输入执行命令。我想通过键入设备+名称来“装备物品”。但是,我认为有一个比在switch-case方法中添加case更好的解决方案。如果我的游戏中有1000件物品,那就需要处理1000个箱子,一定有更好的方法,对吗 如果我的输入在我的item类中包含我的item ArrayList的名称,我该如何查看开关盒拾取基于文本的java游戏中的特定项目,java,arraylist,input,switch-statement,java.util.scanner,Java,Arraylist,Input,Switch Statement,Java.util.scanner,我在用java开发一个基于文本的小型rpg时遇到了一个困难的障碍,我找不到解决方案 游戏管理器是一个简单的开关盒扫描仪,它根据我的输入执行命令。我想通过键入设备+名称来“装备物品”。但是,我认为有一个比在switch-case方法中添加case更好的解决方案。如果我的游戏中有1000件物品,那就需要处理1000个箱子,一定有更好的方法,对吗 如果我的输入在我的item类中包含我的item ArrayList的名称,我该如何查看 static void UseCommands() {
static void UseCommands() {
String input = "";
Scanner sc = new Scanner(System.in);
while (!input.equals("Close")) {
input = sc.next();
switch (input) {
case "commands":
PlayerActions.ShowCommands();
break;
case "inventory":
PlayerActions.ShowInventory();
break;
case "equipment":
PlayerActions.ShowEquipment();
break;
case "spawnItem":
Item.SpawnItem();
break;
case "addItem":
case "close":
sc.close();
break;
}
}
}
我想到的第一个解决方案是将用户输入拆分为一个空格字符,该字符将返回一个字符串数组,这样您就可以在数组[0]上保留开关大小写,并使用大小写“Equipment”:
然后对函数进行编码,以获取数组[1]中的参数。只需确保拆分返回的数组长度至少为2,否则将得到IndexArrayOutOfBoundException。是否可以添加一些代码?它将有助于通过游戏管理器类中添加我的代码的解决方案使用指南。我在想也许在一个新的ItemDataBase类中添加一个映射会有所帮助?