0

https://github.com/addrum/TextGame

所以我有这个游戏。到目前为止,我所取得的成就是,如果用户输入正确的响应,它会返回下一条消息给他们,然后从数组中找出要做什么。我现在需要实现的是程序根据输入的内容返回不同的消息。即向左走,你到达一扇门,向右走,你拿起钥匙。我对如何做到这一点感到很困惑。我考虑过在特定点将消息分组在一起。所以你到达了十字路口——向左、向右和向前的输出都在一个数组中,但是我不知道如何让程序获取下一组消息。我还想使正确的输入具有 [0] 的索引,这样我就可以返回 [0] 的当前消息组索引以匹配它,但这也让我感到困惑。如果我能说清楚就问,因为我没有简单的方法来解释这一点。任何帮助,将不胜感激!

4

1 回答 1

0

如果您对编写文本冒险游戏(“互动小说”或“IF”)感兴趣,您应该考虑为此设计的众多工具中的一些。

  • 可以从IFWiki中找到用于制作具有传统血统的文本冒险的编译器。例如,这是运行Spider 和 Web的 Parchment 解释器(我的最爱之一)。wiki 也有很多关于如何编写有趣的 IF 的文章。
  • Choice of Games是一家制作跨平台 IF 的公司,主要针对移动设备。他们有自己的脚本语言来编写 IF,如果你想出售你的游戏,他们也提供管理。
  • Twine是一个用于构建基于 Web 的 IF 的 IDE。它看起来很容易写,虽然我自己没有尝试过。

如果这只是一种自学 Java 项目,那么我推荐以下方法:

/**
  * Represents one location or one state in the game.
  */
public class DecisionTreeNode {
    /** Text that gets printed when the user lands on this node */
    private final String nodeText;

    /** Maps text that the user can enter to the node that they reach by typing that text */
    private final Map<String,DecisionTreeNode> choices;
}

如果您填写该存根,您将能够编写一个非常简单的 IF 子集。这是您可能拥有的一些节点的示例(使用您问题中的示例游戏):

  • 开始
    • nodeText: "你在一个左右分支的走廊里"
    • 选择:
      1. “左”-> Door_no_key
      2. “正确”-> Dead_end_no_key
  • Door_no_key
    • nodeText:“这里有一扇门,但你没有钥匙”
    • 选择:
      1. “正确”->开始
  • Dead_end_no_key
    • nodeText: "这是个死胡同,这里有钥匙!"
    • 选择:
      1. “获取密钥”-> Dead_end_key
      2. “左”->开始
  • Dead_end_key
    • nodeText:“这是一个死胡同。你带着钥匙。”
    • 选择:
      1. “左”-> Start_key

等等。您可以看到跟踪玩家状态会使游戏设计很快失控,这就是为什么我推荐 IF 工具用于严肃的 IF 游戏。但这可能是一种自学编程指针的好方法。

于 2013-06-13T20:33:18.437 回答