gpt4 book ai didi

java - 在游戏中创建 NPC 数组

转载 作者:行者123 更新时间:2023-11-30 08:50:08 24 4
gpt4 key购买 nike

我现在正在上 Java 类(class),我们应该制作一个基于文本的游戏。我们游戏中的选项之一是允许玩家在 3 种船型之间进行选择;小型、中型和大型。根据他们的选择,他们将能够选择乘船旅行的人数。小型最多允许 3 人,中型最多 6 人,大型最多 9 人。一旦他们做出选择,他们就可以为每位船员输入姓名并选择研究专业。以前,我们将它们设置为单独的菜单(选择船舶、船员规模、研究规范和名称),但我开始认为在同一菜单中选择船员规模、名称和研究规范会更容易。

也就是说,我们现在正在处理数组/ArrayLists,我们应该使用数组来列出游戏中的角色(NPC)。因此,我需要弄清楚如何根据选择的船员人数(1 到 9 之间)创建一个数组,然后提示输入姓名,然后让他们从研究规范列表中​​进行选择。他们将输入一个字母供他们选择,但数组中应包含研究规范的全名。我在另一篇文章中找到了一些代码,我认为在这种情况下可能会有帮助,但我认为它只是触及表面。任何帮助将不胜感激。

 public class Name {
public static void main(String[] args) {
ArrayList<String> name = new ArrayList<String>();
ArrayList<(how do I tell it to select a character option here?)> researchSpec = new ArrayList<(selected option)>();
Scanner sc = new Scanner(System.in);
while (true) {
System.err.println("Please enter the name of your crew member: ");
name.add(sc.next());
System.out.println("Please select a Science Specialization for your crew member");
researchSpec.add(sc.next());
}
}
}

最佳答案

当你有一个小的、预定义的可能值集合时,enum通常是代表这些的理想选择。

public enum Specialization {
PHYSICS,
CHEMISTRY,
BIOLOGY
}

现在,您可以定义 Specialization 类型的变量和 List<Specialization> 类型的列表, 并将这些值称为 Specialization.PHYSICS等。这比使用 String 更好。因为您没有冒例如在代码中某处拼写错误的特化,例如添加 "Pysics"到一个地方的列表,想知道为什么 if (specialization.equals("Physics"))从不工作。

但是,您仍然需要一些 if一个switch , 或 Map用于从字母到特化的映射——除非你喜欢枚举。枚举实际上是一个类,但你不能使用 new在它上面 - 相反,每个标识符自动有一个实例(在这种情况下, PHYSICSCHEMISTRYBIOLOGY 是仅有的三个实例)。您可以向枚举类添加字段、构造函数和方法,以便为每个值赋予不同的属性:

public enum Specialization {
PHYSICS('p', "Physics"),
CHEMISTRY('c', "Chemistry"),
BIOLOGY('b', "Biology");

private char menuLetter;
private String displayName;

private Specialization(char menuLetter, String displayName) {
this.menuLetter = menuLetter;
this.displayName = displayName;
}

public char getMenuLetter() { return menuLetter; }

public String getDisplayName() { return displayName; }
}

您可以使用 values()获取所有值的列表。例如,这将生成菜单选项(我会将选择留给您作为练习):

for (Specialization s : Specialization.values()) {
System.out.println(s.getMenuLetter() + ": " + s.getDisplayName());
}

编辑:或使用常规循环:

Specialization[] specializations = Specializations.values();
for (int i = 0; i < specializations.length; i++) {
System.out.println(specializations[i].getMenuLetter() + ": " + specializations[i].getDisplayName());
}

关于java - 在游戏中创建 NPC 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31122437/

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