你的问题范围很广,很难给出明确的答案。这里有一些想法 - 希望对您有所帮助。
你是对的,你不想对字符串进行硬编码。另一种方法是将字符串存储为外部资源,并在开始时将它们加载到您的游戏中。可以通过多种方式组织资源;选择取决于您的编程平台、游戏架构等。例如,您可以使用简单的名称-值方法:
AREA_1_DESCRIPTION: You stand next o a small white house.
ITEM_22_DESTRUCTION: The nasty snake disappears with a loud "Bang!"
使用 JSON 或 XML 将为您提供更结构化的存储,这会很有帮助,因为您可以组织文本以便更容易在代码中使用它们:
<item id="375" name="Great Sword">
<short_description>A Great Sword of Darkness</short_description>
<long_description>The sword has almost black blade with some unknown runes engraved</long_description>
</item>
如果您的编程系统可以访问数据库,那么您可以执行类似的操作并将文本存储在表中;但是,这可能会使以后编辑文本变得更加困难。如果你想这样做,我仍然建议使用 XML 或 JSON 来存储文本,并让游戏在第一次运行时将文本导入 DB。
您可能还需要某种简单的模板处理引擎来重用某些字符串。您可以从创建 Java String.format() 方法的版本开始。您的方法可能将字符串目录中的字符串 ID 作为第一个参数,并为参数使用一些简单的占位符。假设您的目录中有以下条目:
FIRE_GEM_ACTION: "The Fire Gem touches %% and in %% seconds it turns into ashes."
然后你可以编写一个方法来做这样的事情:
int delaySeconds = 5;
String message = MyTemplateProcessor.process(FIRE_GEM_ACTION, "old map", delaySeconds);
该函数将从目录中获取字符串,搜索占位符(%%)的出现并用参数顺序替换它们,因此在消息中您将得到: The Fire Gem touches old map and in 5 seconds it变成骨灰。
总的来说,我建议您查看一些专门为创建冒险游戏而设计的系统。Inform 7 将是一个很好的起点:http: //inform7.com/learn/