gpt4 book ai didi

java - 如何在这个项目中使用枚举?

转载 作者:行者123 更新时间:2023-12-02 00:53:19 25 4
gpt4 key购买 nike

我整个早上都在看有关枚举的教程和文章,我只是想了解它们如何帮助我。

这是我当前的问题:

我正在制作一个程序,帮助管理玩家在视频游戏中收集的元素。玩家拥有的空间是有限的。每个角色只有 88 个槽位。玩家收集的元素大小各异。

有九种类型的项目:

Boots (always size 4)

Belt (always size 2)

Helm (always size 4)

Ring (always size 1)

Amulet (always size 1)

Gloves (always size 4)

Body Armor (always size 6)

Weapon (can be between sizes 2 and 8)

Shield (can be between sizes 4 and 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?
}

如何在这里使用枚举来避免使用字符串和 String.equals()?谢谢!

最佳答案

Java 中的枚举只是一个类的语法糖,该类具有多个 final 属性以及同一类的实例。

话虽如此,枚举中不能包含变量项,这意味着您的weaponshield 类型需要进行一些调整。

这是我为您准备的:

enum ItemType {
BOOTS (4),
BELT(2),
HELM(4),
RING(1),
AMULET(1),
GLOVES(4),
BODY_ARMOUR(6),
WEAPON_2(2),
//... other ones here
WEAPON_8(8),
SHIELD_4(4),
//... other ones here
SHIELD_8(8);

private int size;

ItemType(int size) {
this.size = size;
}

public int getSize() {
return size;
}
}

唯一的细节是,您应该通过 WEAPON_2WEAPON_3 等传播您的武器,以便能够在枚举中表示它。 shield 也是如此。

这是一个running example .

为了将其集成到您的游戏中,我们假设您的 Item 类如下:

public class Item {
private String name;
private ItemType type;

public Item(String name, ItemType type) {
this.name = name;
this.type = type;
}

// getters and setters and anything else...
}

然后你像这样实例化它:

Item sword = new Item("Excalibur", ItemType.WEAPON_4);
Item shield = new Item("Dragon Shield", ItemType.SHIELD_8);

关于java - 如何在这个项目中使用枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com