如果您对编写文本冒险游戏(“互动小说”或“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: "你在一个左右分支的走廊里"
- 选择:
- “左”-> Door_no_key
- “正确”-> Dead_end_no_key
- Door_no_key
- nodeText:“这里有一扇门,但你没有钥匙”
- 选择:
- “正确”->开始
- Dead_end_no_key
- nodeText: "这是个死胡同,这里有钥匙!"
- 选择:
- “获取密钥”-> Dead_end_key
- “左”->开始
- Dead_end_key
- nodeText:“这是一个死胡同。你带着钥匙。”
- 选择:
- “左”-> Start_key
等等。您可以看到跟踪玩家状态会使游戏设计很快失控,这就是为什么我推荐 IF 工具用于严肃的 IF 游戏。但这可能是一种自学编程指针的好方法。