一个 switch 语句,对玩家库存中的不同物品执行“使用”方法?

问题描述 投票:0回答:1
我正在为编程入门期末课程制作一个基于文本的游戏,并且已经有了一个用于命令的功能 switch 语句(例如“go”、“take”、“use”和“quit”)。现在我进入“使用”部分。如果玩家输入 USE,那么我们将调用 use 方法,其中包含一个 switch 语句,该语句本质上询问“使用什么?”根据玩家输入的项目,我们制定相应的使用方法。但我什至不知道如何正确初始化它。

use方法在主类中被调用,该类称为Game。

public class Player { public String playerName; public int carryWeight; public int carryWeightLimit; ArrayList<Item> heldItems; public Player() { heldItems = new ArrayList<Item>(); playerName = " "; carryWeight = 0; carryWeightLimit = 10; } //some parts omitted public void useItem() { ITEMS item = // The above line is what I'm having problems with completing. switch (item) { case TOY: useToy(); break; case TREATS: useTreats(); break; case LEASH: useLeash(); break; case KEY: useKey(); break; } return; }
    
java switch-statement bluej
1个回答
0
投票
您无法检索此处使用的物品。您需要从读取用户输入的

Game

 类传递它。那么你可以像这样转变你的使用方法:

public void useItem(ITEMS item)
据我了解 

ITEMS

 是一个枚举,然后 
Game
 类将从控制台读取 String,将其映射到枚举并传递给 
Player
 类。

让我们从映射开始:

enum ITEMS { TOY, TREATS, LEASH, KEY; public static ITEMS findByName(String name) { ITEMS result = null; for (ITEMS item : values()) { if (item.name().equalsIgnoreCase(name)) { result = item; break; } } return result; } }
然后读取输入,要求枚举将 

String

 映射到 
ITEMS
 并将其传递给 
Player.useItem()
:

String itemString = // read user item input from console. ITEMS item = ITEMS.findByName(itemString); Player player = new Player(); player.useItem(item);
    
© www.soinside.com 2019 - 2024. All rights reserved.