我该如何实现呢?

时间:2012-02-11 04:27:38

标签: java file parsing

我有75个以上的不同文本文件,其中包含游戏中角色所说的一些对话线。文本文件具有特殊命令,游戏将针对当前情况解析为正确的输出。像%PlayerName%会告诉游戏将玩家的名字放在对话的那个位置。

当玩家切换已保存的游戏时,当前情况会发生变化,但暂时保持不变。最快的一行对话将每1/2秒发表一次。

我该怎么办?我提出的两种实现似乎都有利有弊。

  1. 将每个文件中的每一行对话解析到内存中,并在影响输出的情况发生变化时重新加载每一行
  2. 阅读并解析相应文件中的一些对话,当要说明该对话时
  3. 两者都错了,我应该做一些完全不同的事情。 (解释)
  4. 如果我使用一个,那么当硬盘打开并且一次读取75个文件时,是否会有至少一个口吃?这样做有点不对。

    如果我使用两个,那么无论用户玩游戏多久,我都会快速打开和关闭多个文件。出于某种原因,这也是错误的。

2 个答案:

答案 0 :(得分:1)

如果占用一点RAM不是问题并且文件不包含千兆字节的对话,则可以在应用程序开始时读取所有文件,已经识别出特定的行(即为所有行创建一个数组)快速和简单的访问)但更换延迟的变量,直到在游戏中实际使用线。简单的字符串替换不应该导致游戏中任何明显的延迟。

如果不能将所有文件保留在内存中,您仍然可以保留下一个文件的窗口,例如三个或四个文件,其中包含可从播放器当前位置直接访问的对话框。随着播放器的进展,新文件将在后台加载。这可以确保所需的行始终可以立即使用,每隔一分钟加载一个新文件不会导致过多的IO。

答案 1 :(得分:0)

将这些东西放入jar / zip文件中。如果你使用正确的接口(类加载器或你自己的zip管理器),那么文件将保持打开状态,访问将相当有效。