可以扩展%attacker%方法以包括一些信息,而不仅仅是对象的名称:
- 动词可以是单数或复数。这取决于主题。“您攻击 X”(第二人称单数)与“ Extrakun 攻击 X”(第三人称单数)与“地精攻击 X”(第三人称单数)。大多数动词只需要
-s
添加,但有一些例外。
- 名词可以是专有名词(“ 地精攻击X”)或普通名词(“ 地精攻击X”)。以元音开头的普通名词应使用“ an”而不是“ a”。它可能是一个普通名词,但在当前上下文中只有一个实例(“ 地精攻击X”)。
- 名词的数量可能有所不同,从零(“您没有击中地精 ”)到一个(“您击中一个地精 ”)到许多(“您击中了三个地精 ”)。许多名词只需要一个
-s
或-es
加一个,但有许多例外。
- 主题和对象可以是简单的(“ 小妖精 ”)或复合的(“ 小妖精和她的兄弟 ”)。
- 句子开头的普通名词需要大写,但是如果该名词有冠词或复合词,则只想将第一个单词大写。专有名词总是大写。
- 主语位置(“ 她击中了地精”)和物语位置(“妖精击中了她 ”)使用了不同的代词。
- 可以通过添加
's
if单数(“ 地精的斧头”),'
if(复数)(“两个地精的斧头”),但代词有自己的规则(“ 您的斧头”)来生成所有格。
对于英语,我编写了Python,这是一个文本生成库,它源自名为JaysHouseMOO的MUD。随时学习或复制代码。它没有很好的例外案例库;您必须将其与游戏中使用的文字相加。恐怕我的移植代码未经广泛测试。它还可能需要为游戏添加更多案例(它是为社交MUD而非游戏MUD设计的)。
您的示例将写为"%1I %1:(inflicts) a serious wound (%2n damage) on %3i"
。的数字%1
,%2
,%3
告诉它其目的是被取代; I
/ i
告诉它在需要时添加一个间接文章(“ a”,“ an”);n
告诉它显示没有文章的名词;:(inflicts)
告诉它使该对象的动词缀合。
以下是向攻击者,防御者和其他所有人显示的输出:
$ python
>>> import msg
>>> m = "%1I %1:(inflicts) a serious wound (%2n damage) on %3i."
>>> attacker = msg.GenderedObject('Amit', 'm', 'proper')
>>> defender = msg.GenderedObject('goblin', 'm', 'unique')
>>> points = (12, 'point')
>>> msg.Msg().sub_parties({1: attacker, 2: points, 3: defender},
m, [attacker, defender])
(['You inflict a serious wound (12 points damage) on the goblin.',
'Amit inflicts a serious wound (12 points damage) on you.'],
'Amit inflicts a serious wound (12 points damage) on the goblin.')
请注意,如果您给了它(1, 'point')
,它将打印“ 1点”而不是“ 1点”。那是我在游戏文字中遇到的问题,因此,我确保包括一项功能,以使其易于正确打印。
这是另一个示例,带有复合名词,以及“ a”和“ an”:
>>> m = "%1I %1:(hits) %2'n %2'(head)."
>>> a1 = msg.GenderedObject('goblin', 'm', 'normal')
>>> a2 = msg.GenderedObject('orc', 'm', 'normal')
>>> d1 = msg.GenderedObject('Amit', 'm', 'proper')
>>> d2 = msg.GenderedObject('Extrakun', 'm', 'proper')
>>> msg.Msg().sub_parties({1: [a1, a2], 2: [d1, d2]}, m, [d1, d2])
(["A goblin and an orc hit your and Extrakun's heads.",
"A goblin and an orc hit Amit's and your heads."],
"A goblin and an orc hit Amit's and Extrakun's heads.")
这些示例使用英语,并且仅跟踪男性/女性,代词,单数/复数动词/名词以及专有/普通名词。您需要追踪的内容会因语言和游戏文字的类型而异。西班牙语中有正式和非正式代词。几种语言具有男性和女性动词形式。日语代词取决于主语相对于宾语的状态。在某些语言中,动词变位可以隐式包含主语。确定要生成的所有类型的文本以及要翻译的语言,这将告诉您在游戏对象中需要跟踪的内容。创建内容时,可以包括必要的注释和例外情况。