我整个上午都在看有关枚举的教程和文章,而我只是想尽一切办法来帮助他们。
这是我目前的问题:
我正在编写一个程序来帮助管理玩家在视频游戏中收集的物品。玩家拥有的空间数量有限。每个角色只有88个插槽。玩家收集的物品大小不同。
有九种类型的项目:
靴子(总是4号)
皮带(总是大小2)
头盔(总是4号)
戒指(尺寸始终为1)
护身符(总是大小1)
手套(总是4号)
防弹衣(总是6号)
武器(可以在2到8号之间)
盾牌(尺寸介于4到8之间)
要确定给定武器或盾牌的大小,请使用一张表格,上面列出所有不同的名称和大小。例如,名称Kite Shield的大小为6。所有这些数据都存储在HashTable中,名称是键,而占用的空间量是值。试想一下这张表已经在我的程序中了。HashTable接受一个字符串名称(例如“ Long Bow”,对应的值为8),并返回一个整数大小值。
public class Item
{
/** Name is the first part of the item. Ex. Long Bow */
private String name;
/**
* Defines what an item object is.
* @param name of item.
*/
public Item(String name)
{
this.name = name;
}
public int getItemSize()
{
// TODO: Algorithm here using Enums to determine size of a given item.
}
public String getName()
{
return name;
}
}
这是我对项目类型进行的枚举,但我看不出这对您有什么帮助。
// This is where I need help ↓
public enum types
{
HELM, AMULET, WEAPON, BODY_ARMOR, SHIELD, RING, GLOVES, BELT, BOOTS;
// How do I use this enum to help me determine size?
}
我如何在这里使用枚举以避免使用Strings和String.equals()?谢谢!
您可以在您的Enum中存储大小项目。对于武器和盾牌之类的项目,您已经有了HashMap,因此我们将其保留为枚举。
如果size的值为0(对于WEAPON就是这种情况),我们使用HashMap。
public enum ItemType {
HELM(4),
AMULET(1),
WEAPON(),
BODY_ARMOR(6);
private int itemSize;
ItemType() {
}
ItemType(int itemSize) {
this.itemSize = itemSize;
}
public int getItemSize() {
return itemSize;
}
}
现在,您可以在Item类中实现它。
public class Item
{
/** Name is the first part of the item. Ex. Long Bow */
private String name;
private ItemType type;
/**
* Defines what an item object is.
* @param name of item.
*/
public Item(ItemType type, String name)
{
this.type = type;
this.name = name;
}
public int getItemSize()
{
int size = type.getItemSize();
if (size == 0)
size = Constants.HASH_MAP.get(name);
return size;
}
public String getName()
{
return name;
}
public ItemType getType() {
return type;
}
}
这样创建您的Item类
Item longBow = new Item(ItemType.WEAPON, "Long Bow");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句